我正在为我的项目构建REST API.获取给定用户的INFO的API是:
api.com/users/[USER-ID]
Run Code Online (Sandbox Code Playgroud)
我还想允许客户端传入用户ID列表.如何构建API以使其成为RESTful并获取用户ID列表?
Flo*_*scu 90
如果要在URL上传递所有参数,那么逗号分隔值可能是最佳选择.然后你会有一个如下所示的URL模板:
api.com/users?id=id1,id2,id3,id4,id5
Run Code Online (Sandbox Code Playgroud)
Nil*_*esh 31
api.com/users?id=id1,id2,id3,id4,id5
api.com/users?ids[]=id1&ids[]=id2&ids[]=id3&ids[]=id4&ids[]=id5
Run Code Online (Sandbox Code Playgroud)
IMO,上面的调用看起来并不像RESTful,但这些是快速有效的解决方法(y).但URL的长度受网络服务器的限制,例如tomcat.
RESTful尝试:
POST http://example.com/api/batchtask
[
{
method : "GET",
headers : [..],
url : "/users/id1"
},
{
method : "GET",
headers : [..],
url : "/users/id2"
}
]
Run Code Online (Sandbox Code Playgroud)
服务器将回复新创建的批处理任务资源的URI .
201 Created
Location: "http://example.com/api/batchtask/1254"
Run Code Online (Sandbox Code Playgroud)
现在,客户端可以通过轮询获取批处理响应或任务进度
GET http://example.com/api/batchtask/1254
这是别人试图解决这个问题的方式:
小智 18
我通过使用找到了另一种做同样事情的方法@PathParam
.这是代码示例.
@GET
@Path("data/xml/{Ids}")
@Produces("application/xml")
public Object getData(@PathParam("zrssIds") String Ids)
{
System.out.println("zrssIds = " + Ids);
//Here you need to use String tokenizer to make the array from the string.
}
Run Code Online (Sandbox Code Playgroud)
使用以下网址调用该服务.
http://localhost:8080/MyServices/resources/cm/data/xml/12,13,56,76
Run Code Online (Sandbox Code Playgroud)
哪里
http://localhost:8080/[War File Name]/[Servlet Mapping]/[Class Path]/data/xml/12,13,56,76
Run Code Online (Sandbox Code Playgroud)
Kyr*_*her 17
我更喜欢这种方法: -
api.com/users?id=id1,id2,id3,id4,id5
Run Code Online (Sandbox Code Playgroud)
正确的方法是
api.com/users?ids[]=id1&ids[]=id2&ids[]=id3&ids[]=id4&ids[]=id5
Run Code Online (Sandbox Code Playgroud)
要么
api.com/users?ids=id1&ids=id2&ids=id3&ids=id4&ids=id5
Run Code Online (Sandbox Code Playgroud)
这就是机架的方式.这是怎么PHP做的.这也是节点如何做到的......
归档时间: |
|
查看次数: |
95211 次 |
最近记录: |