我是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中?
答案 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
。