Обработка большого количества параметров запроса - PullRequest
0 голосов
/ 03 августа 2020

Я новичок в 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 ]

1 голос
/ 03 августа 2020

Создайте модель для параметра и используйте ее в конечной точке. POJO не требует дополнительных аннотаций. Он должен иметь список полей, которые соответствуют параметрам запроса, которые будут связаны из HTTP-запроса, стандартных методов получения / установки и конструктора без аргументов.

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 */
}
0 голосов
/ 03 августа 2020

Да. Вы можете заменить все свои параметры String на

@RequestBody SomePOJO requestData

и фактически отправить JSON данные на вашу конечную точку (содержащие данные, соответствующие вашему POJO). Но вы должны использовать конечную точку @POST вместо @GET.

Для справки: Аннотации Spring RequestBody и ResponseBody

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...