处理大量查询参数

时间:2020-08-03 09:33:07

标签: java rest jax-rs

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

@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中?

2 个答案:

答案 0 :(得分:1)

为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 */
}

答案 1 :(得分:-1)

是的。您可以将所有String参数替换为

@RequestBody SomePOJO requestData

并实际将JSON数据发送到您的端点(包含与POJO对应的数据)。但是您应该使用@POST端点而不是@GET

以供参考:Spring’s RequestBody and ResponseBody Annotations

相关问题