给出REST api。 我想了解我可以在Accept标头中设置的媒体类型。 我该怎么办?
我知道我可以做一个随机的
GET http://some.api.com/
Accept:flying/elephants
并希望406的主体具有正确的可接受媒体类型。
有更好的方法吗?
答案 0 :(得分:2)
理论上,API可以通过HTTP OPTIONS
通常,API提供
Accept
的特定资源 - 标头值。另外(您可能知道),Accept
- 标头值通常绑定到IANA defined MIME types
答案 1 :(得分:1)
此问题的一个问题是API中的任何URI都可以使用不同的媒体类型进行响应。在API中使用不同的端点返回不同的内容类型是很常见的。
您可以使用多个通配符请求来探测支持。
您可以从Accept: */*
开始,然后application/*
text/*
*/json
*/xml
等。您会收到一份非详尽的清单,但您会收到大的和优先的。
还有其他奇怪的边缘情况。例如,OData允许您在URL中指定$ format参数以定义响应类型。这会覆盖接受标头。因此,每种格式都是它自己的URI。
如果API更多地使用备用链接关系(http://www.w3.org/TR/html5/links.html#rel-alternate)会很酷,我认为这是最合适的。结合链接的type属性,可以让您了解所检索的任何资源的所有格式。同样,它将特定于每个URI。