【问题标题】:HTTP Response Header - Application VersionHTTP 响应标头 - 应用程序版本
【发布时间】:2013-03-20 13:31:35
【问题描述】:

我正在尝试想出一种方法来使用 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

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

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

这有什么先例吗?
有人有什么建议吗?
我应该闭嘴使用一个吗?

【问题讨论】:

    标签: web-services http rest soap


    【解决方案1】:

    在我看来,使用 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 标头用于此目的。

    【讨论】:

    • 感谢 Deepak,使用“非标准”标题确实让我感到紧张,但似乎是元数据最常见的。我只是担心不使用存在的内置功能,以防 Roy Fielding 审查我的服务! :)
    • 哈哈!说到 Roy 和标准/风格,你可能会觉得这篇博文很有趣 - subbu.org/blog/2012/04/protocols-vs-styles
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 2014-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多