最近发现项目更新资源时候使用的PATCH,但是对接第三方平台拦截更新操作使用的是put对应,导致项目一直403。当然这都不是重点,后来说是PATCH各方面支持都不太好,所以项目统一PATCH改成了PUT,
当然这也不是重点
所以重点是啥?
-------------------------------------------------------------------------------重点分割线-----------------------------------------------------------------------
重点就是 为什么PATCH的支持不怎么好?哪来的这个说法?
接下来就是替PATCH伸冤
PATCH作为非HTTP标准方法,确实一些项目的客户端不是能支持,所以伸冤失败了
PATCH作为unsafe 且 不幂等的方法,我还能说啥?
http method | idempotent(幂等) | safe |
---|---|---|
options | y | y |
get | y | y |
head | y | y |
put | y | n |
post | n | n |
delete | y | n |
patch | n | n |
什么是幂等?
这个问题有过很多答案,一次操作和多次操作结果是一致的。或者说每次请求返回都一样(常用于形容GET的幂等性)。
都不够学术。
HTTP方法的幂等性是指一次和多次请求某一个资源应该具有同样的副作用buzh不知道翻译的对不对)
PATCH 更适用于什么样的请求?
官方给出过示例:
[
{ "op": "test", "path": "/a/b/c", "value": "foo" },
{ "op": "remove", "path": "/a/b/c" },
{ "op": "add", "path": "/a/b/c", "value": [ "foo", "bar" ] },
{ "op": "replace", "path": "/a/b/c", "value": 42 },
{ "op": "move", "from": "/a/b/c", "path": "/a/b/d" },
{ "op": "copy", "from": "/a/b/d", "path": "/a/b/e" }
]
文章引用:
1. 学术的讲幂等 https://blog.csdn.net/bieleyang/article/details/76272699
2. 为什么HTTPPATCH 不幂等 https://blog.csdn.net/weixin_33693070/article/details/91461288
3.正确的使用PATCH https://blog.csdn.net/loveyou128144/article/details/75949932