内容协商和扩展媒体类型

时间:2014-09-21 22:54:35

标签: http content-negotiation

某些媒体类型是其他媒体类型的扩展。这种媒体类型通常在其名称中使用+来表示这一点。例如,application / atom + xml扩展了泛型xml和application / hal + json扩展泛型json。

我的问题是:如果客户端请求通用媒体类型并且服务器想要使用某种扩展媒体类型进行响应,应该怎么做?例如,如果请求具有标头Accept: application/json并且服务器想要使用application / hal + json进行响应,那么服务器是否应该...

  1. ...使用Content-type: application/json提供简体JSON,即不包括_links_embedded?这就是客户要求的内容以及它的内容。如果你想要HAL,请提出要求。

  2. ...用Content-type: application/json传递HAL表示?哈尔,毕竟是伊森和那个客户要求的东西。客户很满意,可以忽略它无法理解的内容。

  3. ...用Content-type: application/hal+json传递HAL表示?像2.,客户得到它想要的东西,可以忽略它不理解的位。但也有一个线索,客户可以从代表中获得更多。

  4. 我的偏好是3.但是,是否有规范,最佳实践或常用方法可以提供最佳选择的指导?

1 个答案:

答案 0 :(得分:1)

服务器可以执行这三种中的任何一种,或者如果它不愿意使用默认表示,它可以使用406 Not Acceptable进行响应。

请参阅:http://tools.ietf.org/html/rfc7231#section-6.5.6