使用广泛的参数列表命名 REST 服务 GET

Naming a REST service GET with extensive parameter list

假设您正在获取一些与学生相关的元数据,并且您正在为此设计一个 REST Web 服务。显然,您可以为每个学生执行 GET,但您更愿意一次获取所有学生。假设ids和学生人数是"too long"。也就是说,我们可能会查询 200 个学生,每个学生的 id 长度为 32 个字符,远远超出安全的 URL 长度。

你会如何克服这个问题?

一种方法是使用 PUT 或 POST 并传入包含学生 ID 的数据结构。你会选择哪个?

如果选择那种方法,您会给这样的服务起什么名字?

还有哪些其他选择?

一一获取肯定不是一个很好的解决方案。

我会使用 POST,学生 ID 在 JSON 数组中。 像

[{"id":"32charstudentId1"},
 {"id":"32charstudentId2"},
 {"id":"32charstudentId3"}]

这很容易在后端迭代并完成工作,很好。 响应可能类似于

[
   {
   "id":"32charstudentId1",
   "meta1":"some info",
    "meta2": "some more info"
   },
   {
   "id":"32charstudentId2",
   "meta1":"some info",
    "meta2": "some more info"
   },
   {
   "id":"32charstudentId3",
   "meta1":"some info",
    "meta2": "some more info"
   }]

服务的名称实际上取决于它为您提供的实用程序。 要通用,您可以简单地将其称为 "FetchStudentDetails"


我想,带有学生 ID 的简单数组也能正常工作。

一种(有点粗糙的)替代方法可能是发送 POST,其中学生 ID 为字符串,由您选择的分隔符分隔,我更喜欢分号 (;)。