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

标签 rest api-design

在设计 REST API 时,传递统计和日志记录所需的元数据的最佳实践是什么,但不会改变服务器的响应?

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

据我了解,选项是:

查询参数

  • 就像 Google Maps API 上的“传感器”参数一样。
  • 正确,因为它允许用户使用常规 Web 浏览器探索 API。
  • 正确,因为对于难以发送自定义 HTTP header 的客户来说,它更简单。
  • 错误,因为过滤器参数仅用于过滤、排序和搜索。
  • 错了,因为如果资源没有改变,为什么 URL 应该改变?

  • HTTP header
  • 像认证一样经常做
  • 正确,因为它是请求元数据的正常位置,不会改变服务器的响应
  • 正确,因为对于 POST/PUT 请求,它避免了同时具有查询参数和请求正文。
  • 错误,因为当您使用 Web 浏览器探索 API 时无法设置 header 。
  • 错误,因为应该避免复杂性,并且 URL+Header 是一个比单独的 URL 更复杂的 API。

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

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

    最佳答案

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

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

    关于请求元数据( session ID 等)的 RESTful API 设计最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22749654/

    相关文章:

    swift - Kitura TypeSafeHTTPBasic 身份验证在帖子正文中寻找凭据?

    php - 在 REST API 中使用 POST 参数或 JSON 哪个更好?

    php - 捕获实体状态交易

    子类型的 rest api 接口(interface)

    java - 使用注解确保方法返回的值不被丢弃

    java - Wildfly 16,注释@JsonIgnore不起作用

    wcf - 创建WCF Restful服务,并发问题

    REST API 设计指南

    authentication - 简单的 REST 身份验证策略?

    mysql - 正确使用 REST 设计 - 类别和子类别