首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rest服务契约-如何公开

Rest服务契约-如何公开
EN

Stack Overflow用户
提问于 2016-06-02 17:18:18
回答 1查看 1.1K关注 0票数 0

当我编写一个soap服务时,很容易为我的客户提供一个关于期望从我的服务中得到什么的契约。如何调用它,返回类型等。当我的客户知道我的服务的URL时,他们可以自己生成它,并且它是用WSDL语言描述的。

rest的最佳实践是什么?例如,我新创建的rest服务只有两个方法:

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

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

来自postman的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在使用rest时,没有通常使用的WSDL契约或类似的约定。

耽误您时间,实在对不起。希望这不是一些类似问题的纯粹重复。

EN

回答 1

Stack Overflow用户

发布于 2016-06-02 18:25:55

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

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

我希望这能帮助你

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37587601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档