【问题标题】:REST API best practice - where to place a unique request identifierREST API 最佳实践 - 放置唯一请求标识符的位置
【发布时间】:2018-07-16 13:40:20
【问题描述】:

在设计REST API 时,在执行http 请求时添加unique request identifier 的最佳做法是什么?

我通常会在标题中将其添加为x-request-id,但今天听到有人提到将其作为查询字符串添加到网址中!

另外在做了一些研究之后,似乎有些人将其添加到响应正文中并将其作为有效负载的一部分发送!

在这三个中哪个是unique request identifier 的最佳应用,为什么?每种方法可能的优缺点是什么?

【问题讨论】:

  • 您需要什么请求标识符?
  • 通过内部微服务架构中的多个请求来跟踪一个请求!

标签: rest api uniqueidentifier


【解决方案1】:

HTTP doesn't include any request identifiers.

但是,如果您需要一个(用于调试或日志增强,例如),您可以使用您选择的标题。 X-Request-IdX-Correlation-IdX-Trace-Id 之类的标头对于您评论中描述的场景看起来很好:通过内部微服务架构中的多个请求跟踪请求

此类标头的值可以是UUID


这个article 可能会给你一些见解。也可以看看Zipkin

【讨论】:

  • 我知道 HTTP 不包含任何请求标识符。以前我使用 UUID 为我的自定义 http 请求标头分配一个值。某些代理剥离标头怎么样,我发现一些使用有效负载的支持者认为这是他们为什么不使用标头?
  • @hyprstack 任何请求元数据都应该属于标头。好吧,确实有些代理可能会去掉非标准的标头。但假设此标头将在您的微服务集群中使用(我们希望成为一个受控环境),我认为这没有什么大问题。
  • @cassiomolin 我有类似的需求,即管理一个唯一的 id 以匹配到达我的 API 的每个请求,以便能够创建所有调用的链(区块链类型)我为每个客户提供的服务。另外,只是为了创建链,在每次调用 API 的任何方法时,我想插入这个唯一的 id 作为强制参数,每次调用任何方法时都会返回其值。有没有一种模式可以实现这一点?
  • @cassiomolin 我创建了一个专门的问题。请看stackoverflow.com/questions/68018699/…
猜你喜欢
  • 1970-01-01
  • 2018-05-17
  • 1970-01-01
  • 2019-12-04
  • 1970-01-01
  • 1970-01-01
  • 2013-10-23
  • 1970-01-01
相关资源
最近更新 更多