我们拥有的@DefaultValue和@QueryParam数量为两位数的API。是否有任何优雅的方法来减少参数列表上的刀具?我们可以在其他地方单独指定映射并注入一个优雅的对象吗?
public Response doRestfulAPI(@QueryParam("param1") String param1,
@QueryParam("param2") String param2,
@QueryParam("param3") String param3,
.......
@QueryParam("paramN") String paramN)
以上,我们希望让它更优雅,如:
public Response doRestfulAPI(@QueryParam("complex") Complex complexParams)
是否有类似上述内容?
答案 0 :(得分:4)
我假设你正在使用JAX-RS。在这种情况下,你应该看看@BeanParam
:
public class MyBean {
@QueryParam("param1")
private String param1;
@QueryParam("param2")
private String param2;
...
}
在您的资源类中:
public Response doRestfulAPI(@BeanParam MyBean bean) {
...
}
答案 1 :(得分:2)
@ micha的解决方案很好,但你也可以使用多值地图来获得不那么优雅但更有活力的uriInfo。
var mockData = {
eventInfo: [
{
Title: "Adam",
Date: "10/06/2016"
},
{
Title: "Red",
Date: "14/06/2016"
},
{
Title: "Connor",
Date: "15/06/2015"
}]
};
答案 2 :(得分:0)
您可以收到参数列表:
@GET
@Path("/info")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response getInfoByIds(@QueryParam("id") List<String> ids){}
查询就像
/info?id=1&id=2&id=3
请注意,URL可能限制为~2000个字符。