【问题标题】:How should I specify HTTP accept header for multipart response?我应该如何为多部分响应指定 HTTP 接受标头?
【发布时间】:2015-03-23 18:08:43
【问题描述】:

我想与一个 HTTP 端点通信,对于它的多部分响应,我希望第 1 部分(或引用内容处置文件名)为 JSON,第 2 部分为 XML,这样做的正确方法是什么?

我可以同时包含 JSON 和 XML,但仅此一项并不能表达我想要为每个部分使用不同格式的意图。

编辑: 假设我有一项服务,现在它正在返回以下内容:

Content-Type: multipart/mixed; boundary=--37adc569155a4943b203e28a422cb96f
Content-Length: ...

----37adc569155a4943b203e28a422cb96f
Content-Type: application/xml; charset=utf-8
Content-Disposition: result

<Result>
    ...
</Result>

----37adc569155a4943b203e28a422cb96f
Content-Type: application/json; charset=utf-8
Content-Disposition: state

{ "Score": 42, ... }

----37adc569155a4943b203e28a422cb96f--

我可以并且希望支持以不同格式传回数据,例如,使用协议缓冲区将state 发送回或使用 JSON 发送result

我认为正确的方法是通过 HTTP Accept 标头,但是我如何与我想要 JSON 中的 state 和协议缓冲区中的 result 的服务进行通信?如果Accept 标头不是要走的路,我应该改用什么?

【问题讨论】:

  • 您的意思是从您的服务器返回一个 MIME 多部分容器,并在端点解析它吗?你控制两端?
  • 是的,我控制两端,但我的客户不一定是唯一会使用该服务的人,我想为调用者提供选择数据返回格式的灵活性在。我已经用一个例子更新了这个问题。
  • 你考虑过User-Agent吗?它旨在定义客户的能力,这正是您在这里寻找的。​​span>

标签: http http-headers


【解决方案1】:

我认为您要执行的操作不是由任何 RFC 定义的,并且要求使用自定义标头字段。我会添加像

这样的标题
X-Foo-Accept-State: application/json; charset=utf-8
X-Foo-Accept-Result: application/xml; charset=utf-8

(其中“Foo”是您的公司名称。有关命名自定义标题字段的最佳方式的参数,请参见其他地方。)

【讨论】:

    猜你喜欢
    • 2013-02-07
    • 1970-01-01
    • 2018-04-14
    • 2019-09-01
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    • 2018-05-13
    • 1970-01-01
    相关资源
    最近更新 更多