HTTP动词 - 何时使用GET / POST / PUT / Delete

11
当你在处理RESTful服务时,经常会听到诸如GET/POST/PUT/DELETE这些术语。我想知道背后的思想是什么?如果我想在消息体中发布一些大量数据,我可以使用POST动词或者利用GET动词完成所有操作。我认为不需要考虑超出这两个动词的范畴。
我们有没有任何通用的指南告诉我们何时使用哪个动词?使用一个动词是否比使用另一个动词更具优势?
PS:我了解背后的思想。
GET : Get object
PUT : Modify Object
DELETE: Delete Object
POST : Create Object
3个回答

8
每个动词都有不同的用途。虽然可以简单地解析正文并忽略请求方法,但这是非常糟糕的做法,使任何人更难以理解您的Web服务。 维基百科概括了请求方法及其预期行为。
一般来说:
  • 使用 GET 请求从 Web 服务中获取信息。

  • 使用 POST 将数据放到 Web 服务器上,没有指定 Web 服务应该将数据放在哪里。例如 StackOverflow 上的一个问题。这可以被认为是插入的等价操作。

  • 使用 PUT 来指定数据的位置。这是幂等操作,重复调用不会改变任何内容。例如,StackOverflow 上的答案或评论会链接到资源,比如作为特定问题的答案。或者这可以被认为是更新的等价操作。

  • 显然,使用 DELETE 删除 Web 服务器上的某些数据或资源。

还有其他请求方法(如维基百科文章中所述),但这些涵盖了人们与 Web 服务交互的主要方式。


3

来自Mozilla官方开发者网站

  • GET方法请求指定资源的表示。使用GET的请求应该只检索数据。

  • POST方法向指定资源提交实体,通常导致服务器上的状态或副作用发生更改。

  • PUT方法用请求有效负载替换目标资源的所有当前表示形式。

  • DELETE方法删除指定的资源。

欲了解更多,请查看官方文档


1

GET 使用GET请求仅检索资源的表示/信息,而不进行任何修改。

POST 使用POST请求创建新的下属资源,即严格说来,当谈论REST时,POST方法用于将新资源创建到资源集合中或数据库中的新行。

PUT 主要使用PUT请求更新现有资源(如果资源不存在,则API可以决定创建新资源或不创建)。

DELETE 使用DELETE请求删除资源(由Request-URI标识)。


你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接