使用 URL 来指定您的对象,而不是您的操作:
请注意,您首先提到的不是 RESTful:
/questions/show/<whatever>
相反,您应该使用 URL 来指定您的对象:
/questions/<question>
然后,您对该资源执行以下操作之一。
GET:
用于获取资源、查询资源列表,还可以查询资源的只读信息。
获取问题资源:
GET /questions/<question> HTTP/1.1
Host: whateverblahblah.com
列出所有问题资源:
GET /questions HTTP/1.1
Host: whateverblahblah.com
POST:
用于创建资源。
请注意,以下内容是错误的:
POST /questions/<new_question> HTTP/1.1
Host: whateverblahblah.com
如果尚未创建 URL,则在指定名称时不应使用 POST 来创建它。这应该会导致资源未找到错误,因为尚不存在。您应该首先将资源放在服务器上。您可能会说,通过创建一个新问题,您还更新了 /questions 资源,因为它现在会在问题列表中返回一个问题。
您应该执行以下操作来使用 POST 创建资源:
POST /questions HTTP/1.1
Host: whateverblahblah.com
请注意,在这种情况下,未指定资源名称,新对象的 URL 路径将返回给您。
DELETE:
用于删除资源。
DELETE /questions/<question> HTTP/1.1
Host: whateverblahblah.com
PUT:
用于在指定资源 URL 时创建或覆盖资源。
对于新资源:
PUT /questions/<new_question> HTTP/1.1
Host: whateverblahblah.com
要覆盖现有资源:
PUT /questions/<existing_question> HTTP/1.1
Host: whateverblahblah.com
……是的,它们是一样的。 PUT 通常被描述为“编辑”方法,因为通过用稍微更改的版本替换整个资源,您已经编辑了客户端下次执行操作时将获得的内容。
在 HTML 表单中使用 REST:
The HTML5 规范为表单元素定义了 GET 和 POST http://www.w3.org/TR/2012/CR-html5-20121217/forms.html#attr-fs-method.
方法内容属性是一个枚举属性,具有以下关键字和状态:
- 关键字GET,映射到状态GET,表示HTTP GET方法。
- 关键字POST,映射到状态POST,表示HTTP POST方法。
从技术上讲,HTTP 规范并不限制您只能使用这些方法。从技术上讲,您可以自由地添加任何您想要的方法,但在实践中,这不是一个好主意。这个想法是,每个人都知道您使用 GET 来读取数据,因此如果您决定使用 READ 来代替,则会造成混乱。那是说...
PATCH:
这是在正式 RFC 中定义的方法。它设计用于当您希望仅发送对资源的部分修改时,它的使用方式与 PUT 非常相似:
PATCH /questions/<new_question> HTTP/1.1
Host: whateverblahblah.com
不同之处在于 PUT 必须发送整个资源,无论它与实际更改的内容相比有多大,而 PATCH 您可以发送just变化。