【问题标题】:HTTP verbs - When to use GET/POST/PUT/DeleteHTTP 动词 - 何时使用 GET/POST/PUT/Delete
【发布时间】:2014-07-22 11:21:17
【问题描述】:
当您使用 RESTFUL 服务时,您经常会听到术语GET/POST/PUT/DELETE。我的问题是这么多动词背后的想法是什么?我可以在GET 动词的帮助下实现一切,或者如果我想在消息正文中发布一些大数据,我可以使用POST 动词。我认为没有必要超越这两个动词。
关于何时使用哪个动词,我们是否有任何一般指导方针?
使用一个动词比另一个动词有什么优势吗??
PS:我知道背后的想法
GET : Get object
PUT : Modify Object
DELETE: Delete Object
POST : Create Object
【问题讨论】:
标签:
rest
post
get
put
restful-architecture
【解决方案1】:
每个动词都有不同的用途。虽然可以简单地解析主体并忽略请求方法,但这是非常糟糕的做法,并且会使任何人更难更好地理解您的 Web 服务。
Wikipedia 总结了请求方法及其预期行为。
一般:
应使用GET 从 Web 请求信息
服务。
应该使用POST 将数据放入 Web 服务器,其中有
没有关于 Web 服务应该将数据放在哪里的规范。一个
示例可能是 StackOverflow 上的一个问题。这可能被认为相当于插入。
当您想要指定数据的去向时,应使用PUT。
这是一个幂等动作,因为重复它不会改变任何东西
在每次重复调用时。一个例子可能是一个答案或评论
StackOverflow,因为它们将链接到资源,例如
回答一个特定的问题。或者,这可以被视为等同于更新。
而DELETE显然是用来删除一些数据或者
来自网络服务器的资源。
还有其他请求方法(如 Wikipedia 文章中所述),但这些方法涵盖了人们将与 Web 服务进行的主要交互。
【解决方案2】:
来自官方 Mozilla 开发者网站
-
GET GET 方法请求指定资源的表示。使用 GET 的请求应该只检索数据。
-
POST POST 方法将实体提交到指定的资源,通常会导致状态更改或对服务器产生副作用。
-
PUT PUT 方法将目标资源的所有当前表示替换为请求负载。
-
DELETE DELETE 方法删除指定的资源。
更多请查看official docs