HTTP响应标头 - 应用程序版本

Jam*_*mes 6 rest soap web-services http

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

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

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

Pragma: application-version=1.0.0-SNAPSHOT
Run Code Online (Sandbox Code Playgroud)

使用额外的Server标题

Server: Apache-Coyote/1.1
Server: MyService-1.0.0-SNAPSHOT
Run Code Online (Sandbox Code Playgroud)

用一个 Via

Via: MyService-1.0.0-SNAPSHOT
Run Code Online (Sandbox Code Playgroud)

或客户头

X-ApplicationVersion: 1.0.0-SNAPSHOT
Run Code Online (Sandbox Code Playgroud)

在我看来,使用a Via或a Server在语义上是不正确的,但是使用X-标题会冒被代理删除但是Pragma不受约束的风险,因此如果想以编程方式使用它则更难解析.

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

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

Dee*_*ala 5

在我看来,使用 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
Run Code Online (Sandbox Code Playgroud)

我见过很多 X 标头用于此目的。

  • 谢谢迪帕克,使用“非标准”标头确实让我紧张,但似乎是元数据最常见的。我只是担心不使用内置功能,以防 Roy Fielding 评论我的服务!:) (2认同)
  • 哈哈 !说到 Roy 和标准/样式,您可能会发现这篇博客文章很有趣 - http://www.subbu.org/blog/2012/04/protocols-vs-styles (2认同)