Как отправить пустой список в качестве параметра с feign? - PullRequest
1 голос
/ 08 мая 2019

Я хотел бы отправить список в качестве параметра также, когда он пуст с символом.

В настоящее время на симуляторе у меня есть следующий метод:

@GetMapping("/artists")
List<Artist> getArtists(@RequestParam("genre") List<Long> genre);

Проблема в том, что когда жанр пустой список, feign создает запрос GET /artists вместо GET /artists?genres=

Я пытаюсь использовать один и тот же uri /artists для нескольких запросов, дифференцируя их только по параметрам запроса, например GET /artists?genre=1,2,4 GET /artists?popularity=89 все сопоставлены с различными методами.

Как я могу отправить пустые списки в качестве параметра с feign?

1 Ответ

1 голос
/ 20 мая 2019

Вы испытываете разницу между параметрами empty и undefined.Feign старается придерживаться RFC 6570 - Шаблоны Uri при расширении параметров URI.На данный момент поддерживается только Simple Expansion.В спецификации говорится, что при работе с неопределенными значениями и списками:

2.3 Переменные

Переменная, определенная как значение списка, считается неопределенной, если список содержит0 членов.

3.2.1 Расширение переменной

Переменная, которая не определена (раздел 2.3), не имеет значения и игнорируется расширениемпроцесс.Если все переменные в выражении не определены, то расширение выражения является пустой строкой.

Предоставляя пустой список, по определению игнорируются значения undefined и undefined., в результате чего параметр вообще не включается.Если вы хотите включить параметр, независимо от того, содержит ли список какие-либо значения, вам необходимо обновить шаблон uri:

@GetMapping("/artists?genre=")
List<Artist> getArtists(@RequestParam("genre") List<Long> genre);

Это будет включать genre= в запросе, даже если список пуст,

...