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



是否可以在一次调用中枚举资源的所有实例,而无需破坏 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,而是你为什么要这样做以及它是否适合你的系统客户端。客户端期望什么层次结构。如果这合适,那么一定要去做。

相关内容

最新更新