休息服务合同 - 如何揭露

时间:2016-06-02 09:18:18

标签: java spring rest service

当我写肥皂服务时,很容易向我的客户提供我的服务期望的合同。如何调用它,返回类型等 这个合约我的客户可以在知道我的服务的URL时自己生成它们,并用WSDL语言描述。

什么是最佳做法来休息?例如,我新创建的休息服务只有两种方法:

1)一个ping服务,它需要NO请求有效负载,如果它正在运行,则只在响应正文中返回一个纯字符串“OK”。 来自浏览器的GET请求看起来像http://localhost:8080/rest/ping)。没有请求参数也没有请求体。

2)第二个是创建用户服务,需要将User对象作为输入,并使用名字和姓氏作为必填字段。 它将新创建的用户返回给json中表示的响应主体中的客户端。

来自邮递员的POST请求可能如下所示:http://localhost:8080/weather/rest/weather/。 它没有请求参数,但包括一个请求体,即“{”firstname“:”john“,”lastname“:”smith“}”。在此示例中,字符串表示为json。 (它需要吗?有更好的方法将“对象”发送到我的服务吗?)。这些都是强制性的,并且想以某种方式告诉我的客户。

响应是用户发送回客户端,除了提供的名字和姓氏外,还包括我的服务生成的电子邮件地址字段。 它看起来像这样:{“firstname”:“john”,“lastname”:“smith”,“email”:“john.smith@example.org”}并且在响应正文中。再次,是否有更好的方法将“对象”返回 客户端比将它们表示为json?

所以tl; dr:将这些服务“暴露”给我的客户端的最佳方法是什么,而不用说明如何使用它。 AFAIK没有与休息时通常使用的WSDL合约或类似合同。

感谢您的时间。希望这不是一个类似问题的纯粹副本。

1 个答案:

答案 0 :(得分:0)

在这个问题上以正确的方式回答是非常复杂的,因为REST与SOAP不同,它是一种架构风格,而不是一种协议。很多时候你可以在互联网上找到用于描述休息ws的休息方式是WADL(WADL on wikipedia)并且它适用于“crud”rest-ws,但在我看来更好的方法是使用RSDL({ {3}})因为包含一些重要方面的休息时间作为超媒体链接描述用于uri的http-hader定义等等。 Hovewer关键点是,休息不是框架或协议,REST意味着拥抱Web功能来构建松散耦合的分布式系统,即使你有一个触及xml或类似的东西来描述你的实现,你应该考虑作为缓存的方面,http协议的正确用法是域协议,超媒体控件的含义以及它如何描述您的应用程序域协议等等都非常复杂。不幸或幸运的是,不存在一种方法作为SOAP来描述rest-ws,因为你应该描述你的行为api,架构方面和应用程序协议。事实上,任何api都是一种资源,它是一种资源表示,通过超媒体控件来描述你的应用程序状态。

对于本讨论中的许多细节,我可以建议在Practis书中阅读REST,在我看来,这是一封非常有趣和解释性的信。

我希望这可以帮到你