7

我试图想出一种方法来使用 HTTP 来响应消息来公开 Web 服务(REST 和 SOAP 接口)的特定内部版本号。

为了清楚起见,我并不想控制客户端正在使用哪个版本的应用程序,因为这是由流量管理器和服务注册表处理的(也已经讨论过很多),我只想稍后能够调试哪个版本已使用或正在使用,例如,检查流量管理器是否提供正确的版本。

我花了很长时间查看 HTTP 规范,无法决定是否使用Pragma

Pragma: application-version=1.0.0-SNAPSHOT

使用额外的Server标题

Server: Apache-Coyote/1.1
Server: MyService-1.0.0-SNAPSHOT

用一个Via

Via: MyService-1.0.0-SNAPSHOT

或客户标题

X-ApplicationVersion: 1.0.0-SNAPSHOT

在我看来,使用 aVia或 aServer在语义上是不正确的,但使用X-标头有被代理丢弃的风险,但Pragma不受约束,因此如果想以编程方式使用它,则更难以解析。

我也有一种感觉,多个Server标头不会被尊重,但是没有办法用我正在使用的容器(JBoss)指定多个值。

这有什么先例吗?
有人有任何提示吗?
我应该闭嘴并使用一个吗?

4

1 回答 1

4

在我看来,使用 Via 或 Server 在语义上是不正确的,但使用 X-header 有被代理丢弃的风险

我不会太担心 X 标头被丢弃。以 ebay 查找服务为例

http://svcs.ebay.com/services/search/FindingService/v1?OPERATION-NAME=findItemsByKeywords&SERVICE-VERSION=1.0.0&RESPONSE-DATA-FORMAT=XML&REST-PAYLOAD&keywords=harry%20potter

响应包含此标头。

X-EBAY-SOA-SERVICE-VERSION: 1.12.0

我已经看到为此目的使用了很多 X 标头。

于 2013-03-20T13:50:09.763 回答