我正在编写一个feign客户端来使用PHP API的端点。
我需要调用一个端点,如:
呜呜呜.没有app.com/number.PHP?number[]=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[]
。
如果我看到feign日志来检查GET URL,这就是我所看到的。
GET [https://www.myapp.com/number.php?number[]={number[]}][1] HTTP/1.1
number[]
不会被实际值替换,这就是API调用失败的原因。
有办法解决这个问题吗?
附:我知道PHP API不应该有这样的查询参数,但它就是这样,我无法改变它。
我也尝试使用List<Integer>
作为number
变量,但输出相同。
我们是否在谈论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)
}
记录通过客户端传递的值
如果问题出在参数命名中怎么办?在第一次出现时你写了numberS []但是进一步命名为number []
您应该将参数命名为numbers
而不使用括号,并将类型更改为List
:
@RequestMapping(value = INumber.URL, method = RequestMethod.GET)
public String getEvents(@RequestParam("numbers") List<Integer> number);