在设计REST服务时,请求的正文内容类型中使用的自定义媒体类型?

时间:2012-04-09 15:34:49

标签: http rest hateoas hypermedia

在创建自己的自定义媒体类型格式(例如application / vnd.myapp + xml)时,客户端在发送正文内容时是否应该在自定义媒体类型中执行此操作?

例如,您将订单的表示形式输入到uri。内容应该是application / vnd.myapp + xml,还是只是xml,因为客户端不会包含像链接这样的超媒体控件?

如果用户接受它(它应该),服务器将始终使用自定义媒体类型进行响应,但是客户端是否必须在其请求主体中使用它?

2 个答案:

答案 0 :(得分:3)

客户端不一定必须使用服务器在GET响应中发回的相同媒体类型将数据发送到服务器(例如,通过PUT或POST)。由服务决定它可以接收哪些媒体类型以及它将返回什么类型。当然,它可以实现,以便在同一资源的两个方向上支持多种媒体类型。

答案 1 :(得分:2)

  

创建自己的自定义媒体类型格式时(比如说)   application / vnd.myapp + xml),客户端应该在发送正文时   内容,在自定义媒体类型中这样做?

不,以HTML为例。 HTML是不同的媒体类型,但数据可以用text / plain,application / x-www-form-urlencoded或multipart / form-data提交。所有这些受支持的类型都由HTML规范本身定义,并且可以在表单定义中提供。因此,您可以自行决定如何使用此控制因素协调客户端(即HTML.FORM中的enctype)

例如,有两种具有写语义的JSON格式:

Collection + JSON:http://amundsen.com/media-types/collection/format/

明确定义数据提交格式,是application / vnd.collection + json

Collection.next + JSON:http://code.ge/media-types/collection-next-json/

支持与上述相同,并且还支持“enctype”属性,服务实现者可以为数据提交指定所需的媒体类型。

  

如果是用户,服务器将始终使用自定义媒体类型进行响应   接受它(它应该),但是客户必须在它们中使用它   请求机构?

见上面的答案。