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