RESTful Web服务是否支持合同优先和合同最后方法?

时间:2013-10-26 05:43:14

标签: web-services rest contract-first

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

1 个答案:

答案 0 :(得分:3)

  

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(contract-last)。我确信你可以使用已发布的WADL来构建客户端存根,但是我没有看到为什么你不能手工编写WADL(契约优先)并使用它来生成存根和骨架的原因。但正如我所说,这可能不是REST的最佳解决方案。

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