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

Rest 序列化对象以完成JSON,而不仅仅是URI,rest,restful-architecture,Rest,Restful Architecture,是否可以枚举一个资源的所有实例,而无需在单个调用中查看rest原则 假设我想使用一个调用枚举所有学生信息 GET /students 根据REST原则,此呼叫将返回: "students": [{ "uri":"/student/1" }, { "uri":"/student/2" }, ] 我想要的是使用单个调用来获取所有数据: GET /student "students": [{ "name":"x", "moreInfo":...,

是否可以枚举一个资源的所有实例,而无需在单个调用中查看rest原则

假设我想使用一个调用枚举所有学生信息

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" 
 }, ]

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


因此,真正的问题不在于这有多RESTful,而在于为什么要这样做,以及它是否适合系统的客户端。客户端需要什么层次结构。如果这个合适的话,那就千方百计去做吧

请包括您的代码。向我们展示学生是如何映射到JSON的,这将特别有用。看起来只有
uri
属性被序列化。我知道您没有问这个问题,但是您是否考虑过使用自定义媒体类型而不是自定义媒体类型?它提供了一种非常好的方法,不仅可以从对象结构中分离链接,还可以选择嵌入对象。