使用广泛的参数列表命名 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 为字符串,由您选择的分隔符分隔,我更喜欢分号 (;)。
假设您正在获取一些与学生相关的元数据,并且您正在为此设计一个 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 为字符串,由您选择的分隔符分隔,我更喜欢分号 (;)。