太多的javax Params

时间:2016-06-20 14:21:46

标签: java rest arguments

我们拥有的@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)

是否有类似上述内容?

3 个答案:

答案 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个字符。