RESTful API设计请求元数据(会话ID等)的最佳实践?

时间:2014-03-30 20:47:06

标签: rest api-design

在设计REST API时,传递统计信息和日志记录所需的元数据的最佳做法是什么,但哪些不会更改服务器的响应?

例如,如果我有服务找到最近的公共厕所,我可能想知道用户的位置是否由GPS确定。或者,如果最终用户的请求通过多个系统,我可能需要传递请求ID以进行调试。

据我所知,选项包括:

查询参数

  • 喜欢传感器' Google Maps API上的参数。
  • 正确是因为它允许用户使用常规Web浏览器浏览API。
  • 对,因为对于发现很难发送自定义HTTP标头的客户来说更简单。
  • 错误,因为过滤器参数仅用于过滤,排序和搜索。
  • 错误,因为如果资源没有变化,为什么要使用网址?

HTTP标头

  • 与身份验证通常相同
  • 是的,因为它是不会改变服务器响应的请求元数据的正常位置
  • 正确的原因是,对于POST / PUT请求,它避免同时拥有查询参数和请求正文。
  • 错误,因为在使用网络浏览器浏览API时无法设置标题。
  • 错误,因为应该避免复杂性,而URL + Header是一个比单独的URL更复杂的API。

如果允许元数据不存在,哪个是正确的选择?

如果元数据必须存在,答案会有所不同,尽管它的值不会改变服务器的响应吗?

1 个答案:

答案 0 :(得分:5)

HTTP标头是正确的答案。这就是他们的目的。

考虑到有多少其他可行的选项可用于测试web apis,作为调试器的Web浏览器并不是特别有效。像Postman,Dev HttpClient,Fiddler,Runscope这样的东西都是测试API的好方法。