什么是正确/首选的REST api设计来获取依赖于时区的数据?
我在考虑简单地将时区添加为URL参数,所以:
$ curl www.api.example.com/data?timezone="Europe/Amsterdam"
但有人建议使用自定义标头,就像github一样:
$ curl -H "X-Time-Zone: Europe/Amsterdam" www.api.example.com/data
https://developer.github.com/v3/#using-the-time-zone-header
我想知道在这里使用header而不是param有什么好处?这样的决定背后是否有任何设计模式?
答案 0 :(得分:3)
完全取决于您,您是否希望在路径,查询字符串,标题或内容正文中接受输入参数。
然而,有人可能会说,当它不是你正在调用的api的主要关注时,标题是有意义的。例如,如果您的api专门用于检索时区的属性,那么我建议您将其传递到网址上,无论是在您的问题中建议的查询字符串,还是在路径上(www.api.example.com) /时区/欧洲/阿姆斯特丹)。
另请注意,您提供的示例使用标头中的参数是POST调用。虽然它没有被禁止,但在POST中传递查询字符串参数通常没有多大意义。通过将时区作为标题传递,消息正文可以关注发布的内容。