2014-09-21 87 views
1

某些媒体类型是其他媒体类型的扩展。这种媒体类型通常使用+来表示它的名称。例如,application/atom + xml扩展了通用xml,application/hal + json扩展了通用json。内容协商和扩展媒体类型

我的问题是:如果客户端请求通用媒体类型并且服务器想用其中一种扩展媒体类型进行响应,应该如何处理?例如,如果要求有头Accept: application/json和服务器要使用的应用程序/ HAL + JSON,应在服务器回应...

  1. ...提供一个纯简JSON与Content-type: application/json,即不要是否包含_links_embedded?这就是客户要求的,这就是它得到的。如果你想要HAL,就问问它。

  2. ...传递HAL表示与Content-type: application/json? HAL,毕竟是IS JSON,这就是客户要求的。客户很高兴,可以忽略它不理解的位。

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

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

回答

1

服务器可能会执行这三个操作中的任何一个,或者如果它不愿意以默认表示形式进行响应,它可能会用406 Not Acceptable进行响应。

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

+1

感谢您的链接,以RFC 7231.我已经太久抱住我的精心翻阅RFC 2616的打印输出我只是把它扔和印刷本和它的同伴。现在,如果我可以停止粘住纸张:-) – biscuit314 2014-09-22 14:08:43