在进行 PATCH 请求时,是否可以在 http header 中传递 json 字符串以向服务器提供选项?

Is it acceptable to pass json string in the http header to provide options to the server when doing PATCH request?

在我的 restful 服务中,我希望允许用户使用 PATCH 请求更新资源的某些字段。但是,有一项要求是,在更新某些字段时,我必须根据提供的选项对 back-end 执行某些操作。我不想将选项与请求的 body 中的主要数据混在一起,所以我想出了 2 种可能的解决方案。

  1. 通过查询字符串传递选项
  2. 通过 http header 将选项作为 json 字符串传递。

由于在某些情况下选项可能包含一些相对较大的文本,我决定通过 http header 传递选项。

有人body以前做过吗?我以后可能会遇到什么问题吗?这是很好的做法吗?如果没有,我还能如何完成同样的事情?

我想说这取决于您想成为多少 REST 纯粹主义者。

我更喜欢用 body 传递选项,因为 PATCH 方法有明确定义的语义,但没有定义数据格式,所以,没有什么能阻止你发送选项在 PATCH body 中,因为无论如何您都必须记录有效负载格式。

如果这不是您的选择,我会说通过查询字符串传递选项是最不可取的,因为 URI 是原子的,包括查询字符串,并且您实际上是在更改标识符。

使用自定义 HTTP header 更容易接受,但您必须记录 header 应该如何工作。一个小问题是 header 长度未由 HTTP 协议定义,但对于大多数实现而言,限制至少为几 KB,因此这可能不是真正的问题。