序列化对象以完成JSON,而不仅仅是URI

时间:2013-10-24 06:39:49

标签: rest restful-architecture

是否可以枚举资源的所有实例,而无需在一次调用中消除休息原则。

假设我想使用一个电话列举所有学生信息。

GET /students

使用REST原则,此调用将返回:

"students": [{
   "uri":"/student/1"
},
{
   "uri":"/student/2"

},
]

我想要的是使用一次调用来获取所有数据:

GET /student

 "students": [{     
  "name":"x",    
   "moreInfo":...,
  "uri":"/student/1"
 },
 {    
  "name":"y",   
  "moreInfo":...,
  "uri":"/student/2" 
 }, ]

1 个答案:

答案 0 :(得分:2)

这不违反HTTP原则。根据您的尝试,您的资源层次结构是否是一个好主意。这样的设置将具有students资源,其保存所有学生的数据。然后就不需要个人学生记录(例如GET /students/:id)。如果返回大量数据,客户端可能会感到恼火,并且它正在将数据处理推送到客户端。假设客户只想要一个学生。它必须解析整个学生群体,忽略所有不相关的数据,才能找到他们想要的学生。当然,如果客户需要所有学生数据,那么这不是问题。

所以真正的问题不在于RESTful这是怎么回事,而是为什么要这样做以及它是否适合您系统的客户端。客户期望的层次结构。如果这适合,那么一定要去。