在设计REST API时,传递统计信息和日志记录所需的元数据的最佳做法是什么,但哪些不会更改服务器的响应?
例如,如果我有服务找到最近的公共厕所,我可能想知道用户的位置是否由GPS确定.或者,如果最终用户的请求通过多个系统,我可能需要传递请求ID以进行调试.
据我了解,选项是:
查询参数
与Google Maps API上的"sensor"参数类似.
正确是因为它允许用户使用常规Web浏览器浏览API.
对,因为对于发现很难发送自定义HTTP标头的客户来说更简单.
错误,因为过滤器参数仅用于过滤,排序和搜索.
错了,因为如果资源没有改变,为什么要使用URL?
HTTP标头
像身份验证通常一样
是的,因为它是请求元数据的正常位置,不会改变服务器的响应
正确的原因是,对于POST/PUT请求,它避免同时具有查询参数和请求体.
错误,因为在使用Web浏览器浏览API时无法设置标头.
错误是因为应该避免复杂性,而URL + Header是比单独的URL更复杂的API.
如果允许元数据不存在,哪个是正确的选择?
如果元数据必须存在,答案是否不同,尽管它的值不会改变服务器的响应?
HTTP标头是正确的答案.这就是他们的目的.
考虑到有多少其他可行的选项可用于测试web apis,作为调试器的Web浏览器并不是特别有效.像Postman,Dev HttpClient,Fiddler,Runscope这样的东西都是测试API的好方法.