我可以在 Rest API 的 http PATCH 方法中使用查询参数,而不是发送部分请求正文吗?
我想避免在发送方和接收方中维护请求类的开销。
我只想更新 1 个字段。
我可以在 Rest API 的 http PATCH 方法中使用查询参数,而不是发送部分请求正文吗?
是的,但可能不是你的意思。
PATCH /a?b=c HTTP/2.0
Content-Type: application/merge-patch+json
{ "y": "z"}
Run Code Online (Sandbox Code Playgroud)
是一个完全令人满意的 HTTP 请求。它说“找到由 /a?b=c 标识的文档,并将 RFC 7386 指定的合并补丁应用于该文档。”
请注意:这里的“查询参数”是标识应该应用补丁的文档的一部分,并没有以任何方式描述应该应用的补丁。
你不应该做的事情:
PATCH /a?b=c
Run Code Online (Sandbox Code Playgroud)
作为尝试/a通过将“b”更新为值“c”来进行修改。这里的基本问题是您正在为具有标准化含义的请求创建新含义,因此当有人尝试使用通用组件访问您的 API 时,可能会出现混淆。
在您的 API 仅由您控制的前端使用的情况下(例如,仅通过从您的 Web 服务器下载的 Java 脚本客户端调用),并且如果您不需要使用任何中间组件(例如 Web 缓存) ) 在中间,那么你可能会侥幸逃脱。
如果您查看HTTP 缓存失效,您将看到PATCH /a?b=c它不会使通过 获取的缓存表示失效GET /a,因为目标 uri 不匹配。
| 归档时间: |
|
| 查看次数: |
2666 次 |
| 最近记录: |