RESTful编程到底是什么?


当前回答

REST==HTTP类比是不正确的,除非你不强调它“必须”是HATEOAS驱动的。

罗伊自己在这里清除了它。

输入REST API时,除了初始URI(书签)和适用于预期受众的一组标准化媒体类型(即,预期任何可能使用该API的客户端都能理解)之外,不应有任何先验知识。从那时起,所有应用程序状态转换都必须由客户端选择服务器提供的选择来驱动,这些选择出现在接收的表示中,或者由用户对这些表示的操作来暗示。转换可以由客户端对媒体类型和资源通信机制的知识来确定(或限制),这两者都可以动态地改进(例如,按需编码)。

[这里的失败意味着带外信息正在驱动交互,而不是超文本。]

其他回答

这在任何地方都很少被提及,但Richardson的成熟度模型是实际判断Restful是API的最佳方法之一。更多信息请点击此处:

理查德森成熟度模型

一种称为REST(RepresentationalStateTransfer)的体系结构风格主张web应用程序应该像最初设想的那样使用HTTP。查找应使用GET请求。PUT、POST和DELETE请求应分别用于变异、创建和删除。

REST支持者倾向于使用URL,例如

http://myserver.com/catalog/item/1729

但REST架构不需要这些“漂亮的URL”。带有参数的GET请求

http://myserver.com/catalog?item=1729

完全是RESTful的。

请记住,GET请求不应用于更新信息。例如,向购物车添加项目的GET请求

http://myserver.com/addToCart?cart=314159&item=1729

这是不合适的。GET请求应该是幂等的。也就是说,发出两次请求与发出一次请求应该没有区别。这就是请求可缓存的原因。一个“添加到购物车”请求不是幂等的,发出两次请求会向购物车添加两个项目副本。POST请求显然适合于这种情况。因此,即使是RESTful web应用程序也需要共享POST请求。

这摘自大卫·M·Geary的优秀著作《核心JavaServer面孔》。

这是一种编程,您的系统架构符合Roy Fielding在论文中提出的REST风格。由于这是描述网络的架构风格(或多或少),所以很多人都对它感兴趣。

另外一个答案是:没有。除非你是作为学术研究软件架构或设计web服务,否则真的没有理由听过这个词。

我想说,理解REST的一个重要组成部分在于端点或映射,例如/customers/{id}/balance。

您可以将这样的端点想象为从网站(前端)到数据库/服务器(后端)的连接管道。使用它们,前端可以执行在应用程序中任何REST映射的相应方法中定义的后端操作。

这就是它可能看起来的样子。

创建具有三个财产的用户:

POST /user
fname=John&lname=Doe&age=25

服务器响应:

200 OK
Location: /user/123

以后,您可以检索用户信息:

GET /user/123

服务器响应:

200 OK
<fname>John</fname><lname>Doe</lname><age>25</age>

要修改记录(姓名和年龄将保持不变):

PATCH /user/123
fname=Johnny

要更新记录(因此lname和age将为NULL):

PUT /user/123
fname=Johnny