我应该使用什么HTTP标头来指定HTTP响应的样式属性,特别是JSON对象中的键的情况?注意:我正在开发REST API,我希望客户提供预期的案例,例如camelCase
或snake_case
。
指定camelCase
后,响应将如下所示:
{
"peopleUrl": "…",
"postsUrl": "…"
}
指定snake_case
后,响应将如下所示:
{
"people_url": "…",
"posts_url": "…"
}
我一直关注的标题是Expect
和Prefer
。 Expect
被描述为服务器必须遵守的强制配置或错误,Prefer
被描述为可选配置。我正在研究的具体语法是:
Expect: case=camel
或:
Prefer: case=camel
目前,我觉得Expect
是最好的,因为它需要配置。但是,在RFC 2616中提供了Expect
的扩展机制,但在RFC 7231中,此扩展机制已被删除,只允许100-continue
字段(滚动到下一页看到提供权证的说明)。在RFC 7240中指定了Prefer
标头,而 似乎具有扩展机制。
哪个标头最适合此配置选项?我是否使用Expect
和Prefer
找错了方向?
答案 0 :(得分:1)
正如一些评论所指出的那样,可能没有HTTP RFC中定义的现有HTTP头名称,它将覆盖/处理您的用例。使用Expect
或Prefer
,定义明确的语义并不能完全满足您的需求,可能会导致比您更喜欢的痛苦/挫折感;这些标头可能由您不希望/期望的方式由现有客户端,服务器和代理专门处理。
也就是说,没有什么可以阻止您使用自己的自定义X-
标头来处理请求和响应,例如 X-JSON-KeyStyle
:
GET /path/to/resource HTTP/1.1
Host: ...
X-JSON-KeyStyle: camel
...
然后您的回复将指示返回数据中使用的样式:
HTTP1/1 200 OK
...
X-JSON-KeyStyle: camel
...
根据规范,任何以X-
开头的标题名称都是故意不被处理/覆盖的,并且用于此类用途。通过这种方法,您只需要记录自定义HTTP标头,供REST API的客户端使用。
希望这有帮助!