例如假设我们有一个宁静的API端点可以返回订单,可以以不同的格式输出。
[GET] /orders/42
可能返回xml,json或pdf。
我认为,在一个宁静的范例中,最好的选择可能是在相对的OPTION调用中返回可用类型作为标头:
[OPTION] /tests
但是我不知道是否存在诸如内容协商服务器标头之类的列表可用内容类型。
我想它应该看起来像:
Available-Content-Types: application/xml,application/json,application/pdf
是否存在类似的东西?
Content Negotiation反过来工作。
客户端请求资源(通常使用GET),并包括Accept
标头和可接受的Content-Type
列表(使用质量值描述偏好顺序)。
然后服务器根据该消息确定发送哪个响应。
所以客户可能会发送:
Accept: application/json;q=1, application/xml;q=0.9, application/pdf;0.5, */*;q-0.1
然后服务器将确定要返回的数据类型。假设所有格式在服务器看来都一样好,它将返回JSON,因为它具有来自客户端的最高质量值。