我理解(来自已接受的回答What is the difference between HTTP and REST?) REST只是一组关于如何使用HTTP的规则
接受的回答说
不,REST是应该使用HTTP的方式。
今天我们只使用了一小部分HTTP协议的方法 - 即 GET和POST。 REST的方法是使用所有协议 方法
例如,REST规定使用DELETE擦除文档(be 它是URI后面的文件,状态等),而使用HTTP,你会 滥用GET或POST查询,例如... product /?delete_id = 22
我的问题是什么缺点/缺点(技术或设计)如果我继续使用POST方法而不是DELETE / PUT来删除/更新Rest中的资源?
答案 0 :(得分:7)
我的问题是缺点/缺点是什么(技术或设计) 如果我继续使用POST方法而不是DELETE / PUT 删除/更新Rest中的资源?
POST
请求不是Idempotent
,而DELETE
请求是Idempotent
。
幂等HTTP方法是一种可以多次调用而没有不同结果的HTTP方法
Idempotency
在构建fault-tolerant
API时非常重要。
假设客户想要通过POST
更新资源。由于POST不是幂等方法,因此多次调用可能会导致错误更新。如果您向服务器发送POST请求会发生什么,但是会超时。资源是否实际更新?在向服务器发送请求或向客户端发送响应期间是否发生了超时?我们可以再次安全地重试,或者我们是否需要首先弄清楚资源发生了什么?通过使用幂等方法,我们不必回答这个问题,但我们可以安全地重新发送请求,直到我们实际从服务器获得响应为止。
因此,如果您使用POST进行删除,则会产生后果。
答案 1 :(得分:0)
在REST中我们通常知道POST
用来添加一些东西,PUT
用于编辑现有数据中的某些东西,DELETE
用于删除一些东西和POST请求是not Idempotent
但DELETE请求是Idempotent
。
虽然上面是定义,但在我的观点中我们正在使用这些方法,因为对于better understanding
,特定方法用于什么目的,并且通过使用这些方法,UI developer
和Backend developer
之间的桥梁将没有被最小化。
如果你想使用POST方法而不是DELETE / PUT那么就会有 没有任何影响,但这不是一个好的编码标准。
答案 2 :(得分:0)
从纯粹的技术角度来看,我并不知道有任何真正的缺点。其他人提到了幂等性,但这不仅仅是使用DELETE,你仍然必须实现它。
这给我们留下了设计考虑因素:
答案 3 :(得分:0)
当我们在其余API中使用 POST 而不是 Delete 时,我们将从客户端抢夺 Idempotency 的功能。这意味着,通过使用POST我们对API用户说,该API在多次击中时会产生不同的结果。
如果发生超时,API用户必须查询资源 他曾要求删除。然后,如果找到,他必须 调用POST API将其删除。
如果使用Delete方法发出相同的请求,那么我们可以保证 我们的API用户,对同一方法的多次调用将返回相同的结果 结果。因此,他可以提出任意数量的请求,直到获得 成功删除,而不是超时而没有询问。
注意:API厂商有责任维护幂等性。仅使用Delete方法不会赋予幂等性。