Spring MVC и получить параметры запроса с Джексоном - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь перехватить другие параметры запроса в Map<String,String> ex: http://url.example/route?lastIndex=10&sort=-afield&othera=test&otherb=test Я хочу, чтобы othera и otherb были сохранены на карте.Возможно ли это?

class MyRequest {
   private String lastIndex;
   private String sort;
   private Map<String,String> myFilters;
}

@RestControler
class MyController {
   @GetMapping("/route")
   public String get(MyRequest request) {
     return "OK";
  }
}

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Поскольку ваш класс MyRequset содержит только строковые параметры, было бы целесообразно использовать что-то вроде

   @GetMapping("/route")
   public MyRequest get(@RequsetParam Map<String,String> allParams) 

, а затем просто преобразовать карту параметров так, как вам нравится.

0 голосов
/ 04 марта 2019

Не думаю, что это может сработать, если вы собираетесь использовать MyRequest класс.Учитывая, что это AJAX GET-запросы (поскольку это @RestController), вы можете использовать @RequestBody:

@RestControler
class MyController {
   @GetMapping("/route")
   public String get(@RequestBody MyRequest request) {
     return "OK";
  }
}

и отправлять запрос как JSON, а не использовать запроспараметры:

curl -X GET \
  http://url.example/route/ \
  -H 'Content-Type: application/json' \
  -d '{
  "lastIndex": "var",
  "sort": "there",
  "myFilters":{
    "hello": "there",
    "hello1": "there1"
  }'
}

Может ли GET-запрос иметь тело?

Спецификации немного неоднозначны об этом - вы можете прочитатьподробнее об этом here.Но контейнеры среды выполнения Spring Boot (я проверял Tomcat, Jetty и UnderTow в Spring Boot 2.0.4.RELEASE) поддерживают их, если вы используете запросы AJAX GET.

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