Имя @RequestParam включает квадратные скобки [] - PullRequest
1 голос
/ 30 апреля 2019

Я пишу симулируемый клиент для использования конечной точки PHP API.

Мне нужно вызвать конечную точку, как:

www.myapp.com / number.php? Номер [] = 1

Мой клиент Feign выглядит так:

@FeignClient(name = "testProxy", url = "${service.url}")
public interface NumberProxy {

    @RequestMapping(value = INumber.URL, method = RequestMethod.GET)
    public String getEvents(@RequestParam("numbers[]") Integer number);
}

Проблемы number[].

Если я вижу журнал симуляции для проверки URL GET, это то, что я вижу.

GET [https://www.myapp.com/number.php?number[]={number[]}][1] HTTP/1.1

number[] не заменяется действительным значением, и это то, что вызывает вызов API.

Есть ли способ справиться с этим?

приписка Я знаю, что PHP API не должен иметь такой параметр запроса, но он есть, и я не могу это изменить.

И я также пытался с List<Integer> для переменной number, но вывод такой же.

Ответы [ 2 ]

1 голос
/ 30 апреля 2019

Вы должны назвать свой параметр как numbers без скобок и изменить тип на List:

@RequestMapping(value = INumber.URL, method = RequestMethod.GET)
public String getEvents(@RequestParam("numbers") List<Integer> number);
1 голос
/ 30 апреля 2019

Мы говорим о org.springframework.web.bind.annotation.RequestParam, если так, то это не должно быть проблемой квадратных скобок.Для меня это работает нормально:

@RequestMapping(value = "/api/somepath", method = RequestMethod.POST)
  public void uploadData(
      @RequestPart("file") MultipartFile fileUpload, HttpServletRequest request,
      HttpServletResponse response, @RequestParam(name = "param[]") Integer number) {
  LOGGER.trace("paramValue=[{}]", number)
}

регистрирует значение, переданное через клиента

Что если проблема заключается в именовании параметров?В первом случае вы пишете число S [] , но далее оно называется число []

...