我可以在Rest API的http PATCH方法中使用查询参数,而不发送部分请求正文吗?
我想避免在发送方和接收方维护请求类的开销。
我只想更新1个字段。
答案 0 :(得分:0)
答案似乎是否。
在RFC中(重点是我)
PATCH方法请求将在请求实体中 描述的一组更改 应用于资源...
从Mozilla,
请求包含正文:是
另一个有力的参考文献W3 PATCH提到了Content-Length
标头的必要性。
答案 1 :(得分:0)
我可以在Rest API的http PATCH方法中使用查询参数,而不发送部分请求正文吗?
是的,但可能不是您的意思。
PATCH /a?b=c HTTP/2.0
Content-Type: application/merge-patch+json
{ "y": "z"}
是一个非常令人满意的HTTP请求。它说:“找到由“ / a?b = c”标识的文档,并按照RFC 7386的规定在该文档中应用合并补丁。
请注意:此处的“查询参数”是应将补丁应用到的文档的 identification 的一部分,而不以任何方式描述应应用的补丁。>
您不应该做什么:
PATCH /a?b=c
尝试通过将“ b”更新为值“ c”来修改/a
。这里的根本问题是,您正在为具有标准化含义的请求创建新的含义,因此,当有人尝试使用通用组件访问您的API时,可能会造成混淆。
在您的API仅由您控制的前端使用的情况下(例如,仅通过从Web服务器下载的Java脚本客户端调用),并且不需要使用任何中间组件(例如Web缓存),那么您可能会摆脱它。
如果您查看HTTP cache invalidation,将会发现PATCH /a?b=c
不会使通过GET /a
获取的缓存表示形式无效,因为目标uri不匹配。