首页 > 解决方案 > 处理大量查询参数

问题描述

我是春天的新手。我的控制器需要处理大量的查询参数。这是我的代码目前的样子:

@GET
@Path("myresource")
@Consumes({ MediaType.APPLICATION_JSON } )
@Produces({ MediaType.APPLICATION_JSON } )
public String getResource
(
  @QueryParam("param1") final String param1,
  @QueryParam("param2") final String param2,
  @QueryParam("param3") final String param3,
  @QueryParam("param4") final String param4,
  @QueryParam("param5") final String param5
) throws Exception
{
  /* Handle query params */
}

这种编码风格在我看来相当难看。我想知道是否有更好的方法来处理(相对)大量查询参数,例如某种可以帮助我将所有查询参数存储到 POJO 中的注释?

标签: javarestjax-rs

解决方案


为 param 创建一个模型并使用它作为端点。POJO 不需要任何额外的注释。它应该有一个字段列表,这些字段与将从 HTTP 请求、标准 getter/setter 和无参数构造函数绑定的请求参数匹配。

class ParamsModel {
   final String param1;
   final String param2;
   ...
   //getter setter constructor
}

@GET
@Path("myresource")
@Consumes({ MediaType.APPLICATION_JSON } )
@Produces({ MediaType.APPLICATION_JSON } )
public String getResource(ParamsModel model) throws Exception
{
  /* Handle query params */
}

推荐阅读