我是REST API的新手,我正在为我的项目创建端点。我的问题是?
为多个记录创建端点的正确方法是什么。而不是这样做
/users/:id
我想在sql中选择多个用户
"where users.id in [ ]"
创建这样的端点是否正确:
/users?user_id=1,2,3
选择ID为1,2和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的哪一部分。
缺点是对矩阵参数的框架支持是变化的。有些人支持他们,有些人不支持。
我最喜欢矩阵参数,但查询参数也可以。
对于类似列表的参数,有两种方法可以指定它们:您可以重复参数名称或用逗号分隔不同的值。两者都是可能的,一些框架更喜欢一个,一些框架更喜欢另一个框架。对于矩阵和查询参数都是如此。