gpt4 book ai didi

spring-cloud-netflix - Springcloud Netflix Feign参数顺序

转载 作者:行者123 更新时间:2023-12-02 17:19:47 30 4
gpt4 key购买 nike

有什么原因可以解释为什么我在声明这样的伪接口(interface)方法时会出现编译错误(Body parameters cannot be used with form parameters):

1) foo(@PathVariable("pathVariableName") String pathVariable, 
@RequestBody List<String> anyVariable)

但是当我使用它时一切正常(切换参数顺序):

2) foo(@RequestBody List<String> anyVariable, 
@PathVariable("pathVariableName") String pathVariable)

在当前项目中,所有其他 feign 方法在前一种形式下都可以正常工作。我不知道这个信息是否重要,但这是唯一一个我尝试使用用 @RequestBody 参数注释的列表。

参数的顺序在这里很重要吗 answer ?那么,在哪些情况下需要注意参数顺序呢?假装 documentation似乎按照我遇到问题的方式使用它。

顺便说一下:我停止了我的项目几分钟,以便在此处发布这个,在尝试运行应用程序之前,就在成功编译之后。我不太确定上面的第二种方法在运行时是否正常。它刚刚通过了编译阶段,没有出现错误。

编辑:这不是真正的编译错误。该错误发生在springboot应用启动过程中。

最佳答案

您需要检查您的网址模板字符串。如果 url 中不包含 {pathVariableName},则 @PathVariable("pathVariableName") 将被视为表单参数。在 feign 中,表单参数不能与主体参数 (@RequestBody) 在同一方法中使用。这就是 1) 抛出异常的原因。

在第二种情况下,当验证@RequestBody 注解时,feign 并不知道第二个参数的存在,这个参数将被当作表单参数。所以它现在不会抛出任何异常。我不确定这是不是故意的行为,但可能是验证错误。

关于spring-cloud-netflix - Springcloud Netflix Feign参数顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43765860/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com