在我的restful服务中,我想允许用户使用PATCH请求更新资源的某些字段。但是,要求在更新某些字段时,我必须根据提供的选项在后端执行某些操作。我不想将选项与请求正文中的主要数据混合,因此我提出了两种可能的解决方案。
由于在某些情况下选项可能包含一些相对较大的文本,因此我决定通过http标头传递选项。
以前有人这样做过吗?我以后可能遇到任何可能的问题吗?这是好的做法吗?如果没有,我怎么能做到这一点?
答案 0 :(得分:1)
我会说这取决于你想要多少REST纯粹主义者。
我更倾向于使用正文传递选项,因为PATCH
方法已明确定义了语义,但没有定义的数据格式,因此,没有什么可以阻止您在{{1}中发送选项因为你必须记录有效载荷格式。
如果这不是你的选择,我会说通过查询字符串传递选项是最不可取的选项,因为URI是原子的,包括查询字符串,你正在有效地更改标识符。
使用自定义HTTP标头更容易接受,但您必须记录该标头应该如何工作。一个小问题是HTTP协议未定义标头长度,但对于大多数实现,限制至少为几KB,因此这可能不是一个真正的问题。