可以使用任何GET,POST,PUT,DELETE-HTTP谓词传递一个值。我们甚至可以使用GET请求更新或删除数据,那么我们为什么要使用DELETE来删除资源?
此外,使用POST方法的重要性如果PUT方法可以创建以及更新记录吗?
答案 0 :(得分:3)
您几乎可以使用POST来执行所有CRUD操作,但不应该。因为每个HTTP动词都有自己的责任。
GET应该是幂等并且安全。 GET可以缓存并在浏览器中一次又一次刷新。理想情况下,触发GET请求不应更改数据。
如果HttpGet方法可以删除,可以插入,可以更新也可以 返回值为什么我们使用HttpPort,HttpPut和HttpDelete?
想象一个场景。
您有一个Web API方法,它使用GET向数据库添加新条目。如果您的GET请求成为链接并且被搜索引擎抓取。您的数据库将包含重复数据。因此,在这种情况下使用POST是有意义的。
选择适当的方法
GET - 从资源请求数据,不应产生任何副作用。
POST - 方法请求服务器在数据库中创建资源,主要是在提交Web表单时。帖子是非幂等,这意味着多个请求会产生不同的效果。
PUT - 方法请求服务器更新资源或创建资源(如果资源不存在)。 Put是幂等的,这意味着多个请求将具有相同的效果。
DELETE - 方法请求从数据库中删除资源或其实例。
POST与PUT
POST和PUT非常相似,因为它们都将数据发送到服务器需要存储的服务器。如果您使用PUT两次发出相同的请求,两次使用相同的参数,则第二个请求将不起作用。这就是PUT通常用于更新方案的原因。
对于不同的Http动词也有一些限制。
答案 1 :(得分:0)
从技术上讲,POST方法涵盖了所有用例。查看HTTP请求标头:
POST /service.aspx HTTP/1.1
Host: test.com&page=2
field1=value1&field2=value2
" field1的"和" field2"是POST参数," page"是一个GET参数,即使它是一个POST请求。
并非每个服务器都支持其他方法。 PUT和DELETE的原因是,从语义上讲,人们想要一个CRUD的Web请求对应物。创建新记录的请求与修改现有记录的请求之间的区别是什么?读取请求与修改记录的请求之间的区别是什么?
惯例是映射以下内容:
C - New Record - POST
R - Read Record - GET
U - Update Record - PUT
D - Delete Record - DELETE
答案 2 :(得分:0)
实际上,您应该遵循协议。因为,除非指定了动词,否则其他开发人员都不知道您的函数将做什么。只是为了消除应用程序API的歧义。否则,您肯定可以做任何事情。