从REST API获取接受的标头

时间:2013-10-28 18:39:01

标签: rest

例如,在 REST API 的上下文中,Allow header response字段对于获取非常有用: 指定资源的有效操作

示例:

Allow: GET, HEAD

是否还有一个众所周知的字段,以获取已接受 Accept标头的列表?例如:

Accept: application/vnd.company.api.com.foo+json;v=42, application/vnd.company.api.com.foo+xml;v=42

1 个答案:

答案 0 :(得分:1)

客户端可以告诉服务它可以接受什么,因为如果客户端无法接受响应,那么客户端就无法做很多事情(因为它不知道如何处理返回的媒体类型)。

如果服务器无法创建符合要求的资源表示,则可以执行以下两种操作之一:

  • 发送406 Not Acceptable
  • 发送不符合Accept标头(HTTP 1.1)的响应

如果服务器根据RFC 2616发送406,只要它不是HEAD请求,“响应应该包括一个实体,其中包含可用实体特征和位置的列表。用户或用户代理可以选择最合适的一种。实体格式由Content-Type头字段中给出的媒体类型指定。“

简单来说,这意味着回复应附有可以提供的内容的链接。可以通过将配置文件属性附加到包含的链接来传达媒体类型(尽管这取决于媒体类型)。

了解服务器提供的媒体类型的一种方法是通过根URI(使用众所周知的媒体类型)提供的链接菜单来发现它们。例如,您对/的请求可能会指定text/html的接受标头并收到以下回复:

<html>
  <head>
    <link rel="foo" type="application/vnd.company.api.com.foo+json;v=42" href="http://v42.api.com/foos/3713678123" />
    <link rel="foo" type="application/vnd.company.api.com.foo+json;v=43" href="http://v43.api.com/foos/3713678123" />
  </head>
</html>