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