

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# HTTP 标头路由模式
<a name="api-routing-http"></a>

基于标头的路由允许您通过在 HTTP 请求中指定 HTTP 标头，为每个请求定位正确的服务。例如，发送标头 `x-service-a-action: get-thing` 将使您能够从 `Service A` `get thing`。请求的路径仍然很重要，因为它为您尝试使用哪种资源提供了指导。

除了将 HTTP 标头路由用于操作之外，您还可以将其用作版本路由、启用功能标志、A/B 测试或类似需求的机制。实际上，您很可能会将标头路由与其他某种路由方法共同使用来创建强大的 API。

通常，在微服务前面，HTTP 标头路由的架构有一个薄路由层，该层会路由到正确的服务并返回响应，如下图所示。该路由层可以覆盖所有服务，或仅覆盖少数服务，以实现基于版本的路由之类的操作。

![\[HTTP 标头路由。\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/cloud-design-patterns/images/routing-5.png)


## 优点
<a name="path-routing-http-pros"></a>

配置更改只需极小的工作量，而且可以轻松实现自动化。这种方法也很灵活，支持创造性的方法，可以只公开您想从服务中获得的特定操作。

## 缺点
<a name="path-routing-http-cons"></a>

与主机名路由方法一样，HTTP 标头路由假定您可以完全控制客户端，并且可以操作自定义 HTTP 标头。代理、内容分发网络（CDN）和负载均衡器可以限制标头的大小。尽管不太可能，但这仍然有机会成为一个问题，具体取决于您添加了多少标题和 cookie。