RESTful编程到底是什么?


当前回答

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

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

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

其他回答

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

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

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

我看到了一堆回答,说将用户123的所有内容放在资源“/user/123”是RESTful的。

罗伊·菲尔丁(Roy Fielding)创造了这个术语,他表示RESTAPI必须是超文本驱动的。特别是,“REST API不能定义固定的资源名称或层次结构”。

因此,如果您的“/user/123”路径在客户端上被硬编码,那么它就不是真正的RESTful。很好地使用HTTP,也许,也许不是。但不是RESTful。它必须来自超文本。

REST代表代表性状态转移。

它依赖于一个无状态的、客户端-服务器的、可缓存的通信协议——实际上在所有情况下都使用HTTP协议。

REST通常用于移动应用程序、社交网络网站、mashup工具和自动化业务流程。REST风格强调通过有限数量的操作(动词)来增强客户端和服务之间的交互。通过将资源(名词)分配给它们自己独特的通用资源指示符(URI)来提供灵活性。

休息介绍

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

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

剩下的一点是,如果我们同意对基本操作使用通用语言(http动词),那么可以配置基础结构来理解它们并适当地优化它们,例如,通过使用缓存头在所有级别实现缓存。

通过正确实现的restful GET操作,信息来自服务器的DB、服务器的memcache、CDN、代理的缓存、浏览器的缓存或浏览器的本地存储都无关紧要。可以使用最快、最容易获得的最新来源。

说Rest只是语法上的改变,从使用带有动作参数的GET请求到使用可用的http动词,这看起来没有任何好处,而且纯粹是修饰。重点是使用一种可以被链的每个部分理解和优化的语言。如果GET操作有副作用,则必须跳过所有HTTP缓存,否则结果将不一致。