如何创建具有多个id选择的REST API端点

时间:2016-10-11 02:01:24

标签: rest api

我是REST API的新手,我正在为我的项目创建端点。我的问题是?

为多个记录创建端点的正确方法是什么。而不是这样做

/users/:id

我想在sql中选择多个用户

"where users.id in [ ]"

创建这样的端点是否正确:

/users?user_id=1,2,3

选择ID为1,2和3的用户?

3 个答案:

答案 0 :(得分:1)

您可以在代码中设置一个列表,以便从查询Parma中获取用户ID列表。

端点看起来像 ?/用户ID = 1和ID = 2 ...

在Java中,您可以捕获查询Params,如下所示。

@QueryParam(" id")List<整数> IDS

答案 1 :(得分:1)

如果您的HTML表单允许多个选择,例如下面的示例,则浏览器会按照Rolson Quadras提到的GET请求执行/search?q=volvo&q=opel。{/ p>

<form action="/search" method="GET">
  <select multiple name="q">
    <option value="volvo">Volvo</option>
    <option value="saab">Saab</option>
    <option value="opel">Opel</option>
    <option value="audi">Audi</option>
  </select>
  <button type="submit">Search</button>
</form>

现在,由服务器实现来了解发送的内容。例如,Rails也理解/search?q[]=volvo&q[]=opel(注意用于表示数组的方括号)。

答案 2 :(得分:1)

除了查询参数,您还可以使用matrix parameters。矩阵参数的优点是它们明显属于URL的特定部分。请考虑以下事项:

/users;id=1,2,3/messages

这将返回属于用户1,2和3的消息列表。

使用查询参数,它看起来像这样:

/users/messages?users=1,2,3

这很有效,但它很奇怪。查询参数不会传达它们所属的URL的哪一部分。

缺点是对矩阵参数的框架支持是变化的。有些人支持他们,有些人不支持。

我最喜欢矩阵参数,但查询参数也可以。

对于类似列表的参数,有两种方法可以指定它们:您可以重复参数名称或用逗号分隔不同的值。两者都是可能的,一些框架更喜欢一个,一些框架更喜欢另一个框架。对于矩阵和查询参数都是如此。