HTTP中的'q'参数'接受'标题

REST API可以以多种格式返回资源表示 - 更具体的MIME类型。客户端应用程序或浏览器可以在HTTP Accept标头中请求任何受支持的MIME类型。从技术上讲,Accept标题可以以逗号分隔值的形式具有多个值。

例如,Accept请求text/htmlapplication/xml格式的标头可以设置为:

Accept : text/html,application/xml

'q'参数

有时,客户端可能希望在请求多种MIME类型时设置其首选项。要设置此首选项,请使用q参数(相对品质因数)。

q参数值可以是0到1。0是最低值(即最不优选),1是最高值(即最优选)。

示例用法可以是:

Accept : text/html, application/xml;q=``0.9``, */*;q=``0.8

在上面的示例中,客户端首先指示它希望以text/html格式获得响应的服务器。它服务器不支持所text/html请求资源的格式,而不支持application/xml格式。如果两种格式都不可用,则以其支持的任何格式发送响应(*/*)。

  • 'q'参数的一个好处是最小化客户端 - 服务器交互,这可能是由于内容协商失败而发生的。
  • 它还允许客户端接收他们可能不知道的内容类型,可以使用星号“*”代替MIME类型值的后半部分或两半。

以下是HTTP规范如何定义它:

每个媒体范围可以跟随一个或多个accept-params,从“q”参数开始,用于指示相对品质因数。第一个“q”参数(如果有的话)将media-range参数与accept-params分开。质量因子允许用户或用户代理使用从0到1的“q”值标度来指示该媒体范围的相对偏好度。默认值为1。

如果给定相同q值有两种MIME类型,则两者之间的更具体类型将获胜。

例如,如果两个application/xml*/*具有0.9的偏好,然后application/xml将服务器提供服务。

如果不存在Accept头字段,则假定客户端接受所有媒体类型。如果存在Accept头字段,并且如果服务器无法根据组合Accept字段值发送可接受的响应,则服务器应该发送406 (not acceptable)响应。