当前位置: 首页 > article >正文

PathVariable annotation was empty on param 0.问题解决

项目启动报错,提示信息如下:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.xxx.feign.StoreFeign': FactoryBean threw exception on object creation; nested exception is java.lang.IllegalStateException: PathVariable annotation was empty on param 0.

 上网查询了下,原来feign里边涉及到@PathVariable@RequestParam的用法跟SpringMVC有所差别,总结起来就是:

  • Spring MVC 控制器: 如果方法参数名和路径变量名或查询参数名相同,可以省略路径变量或查询参数的名称。
  • Feign 客户端: 必须显式指定路径变量名或查询参数名,即使它们和方法参数名相同。

在Controller中使用@PathVariable@RequestParam 注解用于从 HTTP 请求中提取参数,通常不需要指定路径变量名,Spring 会自动根据方法参数名来匹配 URL 路径中的变量名(如果参数名与路径变量名相同的话)。如果不同,才需要显式地指定路径变量名:

@GetMapping("/users/{userId}")
public User getUser(@PathVariable("userId") String id) {
    // id对应路径变量userId
}

上面代码中路径变量名为userId,参数名为id,此时名称不一样,需要在@PathVariale中指定跟路径名一致,如果路径变量名与参数名一样,则@PathVariale不需要使用括号标注路径变量名:

@GetMapping("/users/{userId}")
public User getUser(@PathVariable String userId) {
    
}

@RequestParam 也是一样的道理,如果方法参数名和查询参数名相同,可以省略 @RequestParam 中的参数名:

@GetMapping("/users")
public User getUser(@RequestParam String id) {
    // ...
}

但是在Feign 客户端中,@PathVariable@RequestParam 的使用方式与 Spring MVC 中类似,但是在Feign 中的参数必须显式指定路径变量名或查询参数名,即使它们和方法参数名一致。Feign 不会自动根据参数名推断路径变量或查询参数的名称。因此在Feign进行微服务调用时,凡是使用@PathVariable@RequestParam必须显式指定变量名或查询参数名。要不然就会报开头的异常。


http://www.kler.cn/a/383449.html

相关文章:

  • Django 模型中使用选择(choices):全面指南
  • 国产之光--仓颉编程语言的实战案例分析
  • 《Swift 字面量》
  • langchain使用FewShotPromptTemplate出现KeyError的解决方案
  • MarkItDown的使用(将Word、Excel、PDF等转换为Markdown格式)
  • [Android]按下扫描键时启动一个线程来执行某些操作
  • 《C语言程序设计现代方法》note-3 选择语句 循环语句
  • C++(一)
  • 开学轻松逆袭孩子的学习利器培养自律习惯,提高学习效率❗❗让习惯养成更轻松~
  • 【Rust Crate之Actix Web(一)】
  • Sigrity Power SI 3D-EM Inductance Extraction模式如何进行电感的提取操作指导(一)
  • 计算机体系结构知识(二)-gdb和args
  • Linux -- 初识线程
  • 【鉴权】OAuth 2.0: 高度灵活与安全的身份认证框架
  • 百度实习生内推
  • Java实战项目-基于微信小程序的校园生活互助服务小程序
  • 供热的一些基础技术数据
  • 2024年10月全球人工智能领域的重大事件盘点
  • Prompt Engineering介绍
  • AI大模型重塑软件开发流程:定义、应用场景、优势、挑战及未来展望
  • 父组件调用函数式子组件,并向子组件传递函数参数。
  • Web3中的区块链技术:从基础设施到应用的演变
  • Python Matplotlib:基本图表绘制指南
  • 社交电商全球化:开源链动模式的引领与挑战
  • uniapp 整合 OpenLayers - 测距测面
  • 安装mysql主从复制