RESTful Web 服务(例如在 JAX-RS 实现中)是否支持契约优先(自上而下)方法和契约最后(自下而上)方法?
1 回答
RESTful Web 服务是否支持契约优先和契约后两种方法?
这取决于您使用的工具/框架。
您所说的适用于 SOAP Web 服务及其随附的 WSDL。
WSDL 描述了 Web 服务期望的输入以及客户端期望的输出。它定义了为了让双方相互通信而要遵循的合同。您可以通过执行contract-first 或 contract-last来获取 WSDL,然后您可以使用此 WSDL 为客户端存根或服务框架生成代码。
但是做 REST 和做 SOAP 是不一样的。适用于 SOAP(一种协议)的流程不一定会因为我们熟悉它们而适用于 REST(一种架构风格)。
与公开方法和方法签名的 SOAP 不同,REST 公开资源。了解这些资源交换中使用的媒体类型是 REST 客户端与 REST Web 服务通信所需要的全部内容。无需单独的文档来描述资源。
由于HATEOAS原则,REST 客户端更具动态性,可以适应使用相同媒体类型进行通信的其他服务。公开静态服务描述文档将限制 REST 服务。
话虽如此,有些 REST 工具确实公开了描述文档,例如Jersey 公开了 WADL(最后合同)。我确信您可以使用已发布的 WADL 来构建客户端存根,而且我看不出您不能手动编写 WADL(合同优先)并使用它来生成存根和骨架的原因。但正如我所说,这可能不是 REST 的最佳解决方案。
如果合同最后或合同优先的方法在 REST 中有意义,您可能需要阅读以下一些帖子以形成意见: