Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @RequestParam名称包含方括号[]_Java_Spring_Spring Boot_Spring Cloud Feign_Netflix Feign - Fatal编程技术网

Java @RequestParam名称包含方括号[]

Java @RequestParam名称包含方括号[],java,spring,spring-boot,spring-cloud-feign,netflix-feign,Java,Spring,Spring Boot,Spring Cloud Feign,Netflix Feign,我正在编写一个假客户端来使用PHPAPI的端点 我需要调用一个端点,如下所示: www.myapp.com/number.php?编号[]=1 我的假客户是这样的: @FeignClient(name = "testProxy", url = "${service.url}") public interface NumberProxy { @RequestMapping(value = INumber.URL, method = RequestMethod.GET) publi

我正在编写一个假客户端来使用PHPAPI的端点

我需要调用一个端点,如下所示:

www.myapp.com/number.php?编号[]=1

我的假客户是这样的:

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

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

如果我看到检查GET URL的假日志,这就是我看到的

GET [https://www.myapp.com/number.php?number[]={number[]}][1] HTTP/1.1
number[]
不会被实际值替换,这就是API调用失败的原因

有办法解决这个问题吗

p.S. 我知道PHPAPI不应该有这样的查询参数,但它是什么,我不能改变它


我也试过用
List
作为
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)
}
记录通过客户端传递的值


如果问题出在参数命名上怎么办?在第一次出现时,您写的是数字[],但进一步命名为数字[]

您应该将参数命名为不带括号的
数字
,并将类型更改为
列表

@RequestMapping(value = INumber.URL, method = RequestMethod.GET)
public String getEvents(@RequestParam("numbers") List<Integer> number);
@RequestMapping(value=INumber.URL,method=RequestMethod.GET)
公共字符串getEvents(@RequestParam(“数字”)列表编号);

因为您可以将值作为对象获取,并通过ObjectMapperThanks映射到整数以获得答案。我尝试了这个,但没有成功,因为Faign创建的最终URL是www.myapp.com/number.php?numbers=1,而php API只有在它是www.myapp.com/number.php?numbers[]=1时才有效。谢谢您的回答。我尝试了这个方法,但没有成功,因为Faign创建的最终URL是
www.myapp.com/number.php?number=1
,而php API只有在
www.myapp.com/number.php?number[]=1
时才起作用。方括号对于PHP API很重要。Spring没有将方括号放在查询参数中,这就是问题所在。如果它是一个Spring服务,那么它会工作的,但我猜PHP API不是这样工作的。是的,你对
RequestParam
numbers
的包的看法是正确的,只是一个输入错误,它是
numbers
(我已经更新了问题)也许是你的工作,因为它是一个常规控制器,但我的是一个假的代理方法来使用PHP API。