【问题标题】:Do RESTful web services support both contract-first and contract-last approaches?RESTful Web 服务是否支持契约优先和契约后两种方法?
【发布时间】:2015-06-20 03:00:41
【问题描述】:

RESTful Web 服务(例如在 JAX-RS 实现中)是否支持契约优先(自上而下)方法和契约最后(自下而上)方法?

【问题讨论】:

  • 请更具体。您认为这些方法在 JAX-RS 应用程序中会产生什么结果?
  • 如果soap(JAX-WS) 支持这两种方法,那么为什么不支持RESTful?
  • 我知道restful支持contract-first,但它支持contract-first吗?如果不是这样? Bcos 合同优先提供当今业务急需的整体管理

标签: web-services rest contract-first


【解决方案1】:

RESTful Web 服务是否支持契约优先和契约后两种方法?

这取决于您使用的工具/框架。

您所说的适用于 SOAP Web 服务及其随附的 WSDL。

WSDL 描述了 Web 服务期望的输入以及客户端期望的输出。它定义了为了让双方相互通信而要遵循的合同。您可以通过执行contract-first or contract-last 获得 WSDL,然后您可以使用此 WSDL 为客户端存根或服务框架生成代码。

但是做 REST 和做 SOAP 是不一样的。适用于 SOAP(一种协议)的流程不一定会因为我们熟悉它们而适用于 REST(一种架构风格)。

与公开方法和方法签名的 SOAP 不同,REST 公开资源。了解这些资源交换中使用的媒体类型是 REST 客户端与 REST Web 服务通信所需的全部内容。无需单独的文档来描述资源。

由于HATEOAS 原则,REST 客户端更具动态性,可以适应使用相同媒体类型进行通信的其他服务。公开静态服务描述文档将限制 REST 服务。

话虽如此,有些 REST 工具确实会公开描述文档,例如 Jersey who exposes a WADL(最后一个合同)。我确信您可以使用已发布的 WADL 来构建客户端存根,我看不出您不能手动编写 WADL(合同优先)并使用它来生成存根和骨架的原因。但正如我所说,这可能不是 REST 的最佳解决方案。

如果合同最后或合同优先的方法在 REST 中有意义,您可能需要阅读以下一些帖子以形成意见:

【讨论】:

  • 好一个,但是,请您给我任何工具/框架的名称,通过它我可以使用合同优先的方法实现 RESTful Web 服务。无论如何,我不认为 RESTful 支持合同优先!..感谢您的回复
  • @Siraj Chaudhary:我知道的唯一工具(不知道它们有多稳定或它们有多少功能,因为我只知道它们,我实际上并没有使用它们)是WADL2Java 其中I think is what CXF uses,还有一个更通用的工具,叫做rest-api-code-gen
  • 此信息很有用。这意味着我们也可以使用 RESTful 编写合约优先的 Web 服务。谢谢@Bogdan
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-24
  • 1970-01-01
  • 2014-12-02
  • 1970-01-01
  • 2020-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多