RESTful服务是否可以为同一资源返回JSON和XML,具体取决于请求标头?

时间:2014-03-12 20:04:32

标签: java xml json rest restful-architecture

我有一个简单的RESTful方法,它当前返回一个对象的JSON表示。

我的问题更多来自架构方面而非完全技术问题。

RESTful服务是否应该以同时返回JSON和XML的方式设计?

据我所知,这是一种不好的做法,应该为此定义单独的资源。一个资源应返回JSON数据和其他一个XML。

我是否正确思考?

2 个答案:

答案 0 :(得分:19)

相同的资源可能会返回XML或JSON,具体取决于请求,但它不应同时返回两者。您将根据请求知道返回哪一个,因此无需生成两者 - 只需生成您将要返回的那个。

以下是您可以选择决定返回的方式。按顺序进行评估,在确定要返回的格式后停止:

  1. 如果已将扩展程序添加到资源(GET /user/1234.jsonGET /user/1234.xml),请将其用作请求的格式。
  2. 如果设置了Accept标头,请使用该标头的值作为请求的格式。
  3. 如果有请求正文(如POST的情况),并且Content-Type标头指定JSON或XML,请使用它。
  4. 如果以上都不适用,请使用默认格式(通常使用JSON作为默认格式,除非您的客户通常仍在使用XML)。

答案 1 :(得分:2)

没有。您表示资源的方式应该由您的客户期望的内容来定义(有一个http-header来说明客户接受的表示形式)。 这意味着您的服务器应该检查当前客户端接受的表示形式,并以此表示形式发送响应(或发送一个表示他不能代表该媒体类型资源的响应)