You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在浏览器URL的PathParam中传递BigDecimal值?REST接口报错排查

解决@PathParam传递BigDecimal时的参数提取错误

哦,这个坑我之前踩过!你现在的问题根源完全出在路径参数的传递格式不对——@PathParam是从URL的路径分段里提取纯值的,根本不认识你塞进去的JSON格式字符串,所以容器才会报“无法从HTTP请求中提取参数”的错误。

为什么你的请求会失败?

你写的URL里把{"par1" : 1.2}这种JSON结构直接丢进了路径分段,但@PathParam("par1")期望拿到的是一个可以直接转换成BigDecimal的纯数值字符串(比如1.2),容器没法把JSON解析成BigDecimal类型,自然就报错了。

正确的传递方式

直接在路径分段里放纯数值就好,不需要任何JSON格式的包装:

http://xxlocalhostaddressxx/rest/app/helloxyz/1.2/1.2/

这样容器会自动把路径里的1.2字符串转换成BigDecimal对象,完美匹配你方法里的参数定义。

额外注意事项

  • 不管是整数、带小数的数值,甚至负数都可以直接传递,比如/helloxyz/10/-2.5/也能被正确解析。
  • 如果数值里包含需要URL编码的特殊字符(比如百分号%),记得先做URL编码再传递,比如0.5%要转成0.5%25,避免解析出错。
  • 别搞混参数注解:如果确实想用JSON格式传参,那应该用@RequestBody接收整个JSON请求体,而不是把JSON塞到路径里——@PathParam就是用来处理路径分段里的纯值的。

内容的提问来源于stack exchange,提问作者yeppe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:45:35