Симулировать и параметры

#java #spring #spring-boot #jhipster #spring-cloud-feign

#java #весна #весенняя загрузка #jhipster #spring-cloud-симулировать

Вопрос:

Обычно в rest с нумерацией страниц есть методы с критериями и нумерацией страниц, мне нужно вызвать этот метод, используя подход Feign, но у меня ошибка:

 Method has too many Body parameters
 

Мой вызов метода:

  @RequestMapping(value = "/server/myRequest", method = RequestMethod.GET)
 public ResponseEntity<String> getMyRequestByCriteriaClient(@RequestHeader("Authorization") String authHeader, CriteriaCustom criteria, Pageable pageable);
 

(CriteriaCustom — это простой pojo с получателем и установщиком)

На остальной стороне у меня есть:

     @GetMapping("/myRequest")
    public ResponseEntity<String> getMyRequestByCriteriaServer(CriteriaCustom criteria, Pageable pageable) {...}
 

Как я могу написать вызов на стороне клиента?
Я пытаюсь передать критерии и страницы в Map<String,Object> и @RequestParam, но они не поступают на сторону сервера.

Я не могу поверить, что невозможно использовать Feign для вызова и передачи критериев и нумерации страниц на сервер. Это просто ПОЛУЧИТЬ!!!

Ответ №1:

Это происходит потому, что вы передаете CriteriaCustom and Pageable как тело в запросе GET, который сервер с радостью проигнорирует. И в вашем случае есть два тела, отсюда и ошибка — Method has too many Body parameters

Так что либо вы можете передать их как Map<String, Object> RequestParams , либо вы можете написать свой собственный кодировщик, который мог бы сделать это для всех ваших симуляций. Вы можете найти код здесь.

Комментарии:

1. Спасибо за ответ, но я не вижу решения в опубликованной вами ссылке. Например: что такое BaseRequest??? Я попробовал сопоставить<String, Object> и даже передать строку со всеми критериями (param1=alfaamp;param2=beta …), Но они передаются в кодированном виде (param1=alfa стал param1:lfa), и они неправильно просматриваются сервером.

2. Это был просто пример, чтобы вы начали. Итак, в принципе, вам нужно отражение, чтобы получить все пары ключ-значение из любого объекта, который вы передаете от клиента feign, и создать их как параметры запроса (Map<String, Object> ). BaseRequest представляет собой пример, который вам может понадобиться, а может и не понадобиться.