Failed to convert value of type ‘java.lang.String’ to required type 'java.lang.Long’总是说参数类型错误,会不会是接口没写好?
今天犯了一个超级无语的错误
写好接口之后总是进不去接口,还总是说报错:
Failed to convert value of type 'java.lang.String' to required type 'java.lang.Long'; nested exception is java.lang.NumberFormatException: For input string: "getUserPostCode"
我测试了实现类和Mapper数据都能正常查询,打了debug接口就进不去!
一试就说我参数类型错误。
可是我的接口明明都没有写参数,灵异事件?
后来才发现原来是我前端发请求的时候路径写错了。
但是偶然发现了一个知识点,
/businessPaymentApply/info/getUserPostCode这是正确的接口路径
/businessPaymentBatch/info/getUserPostCode这是错误的接口路径(就是我在前端写错了的路径)
我之前就是因为在前端写路径的时候写了这个错误的路径,我在businessPaymentBatch这个接口类中明明都没有写getUserPostCode接口。他不给我报错404,居然是给我报错类型转换错误。
后来才发现原来是我在businessPaymentBatch 这个类中写过一个get请求的接口
于是 我发的请求就到这里来了,我就说我明明没有传参数,但是却老是说我传的参数是String,而且还是 “getUserPostCode”,这个是我的接口名称。
原因在businessPaymentBatch这个类我没有写getUserPostCode这个接口,由于我在前端写的请求是GET请求,所以后台就直接去找businessPaymentBatch里面的GET接口,而这个接口又是PathVariable的,所以就直接把我的 "getUserPostCode"接口名去代替PathVariable路径了,所以总是说我String 不能转 Long,需要的参数是Long类型,但你却给了String类型。
所以其实这
@GetMapping(“/{businessPaymentBatchId}”)
和
@GetMapping(“/getUserPostCode”)
很类似,不建议这么写,最好在他们前面在加一个路径,比如:
@GetMapping(“/business/{businessPaymentBatchId}”)
和
@GetMapping(“/postCode/getUserPostCode”)
这个样就不一样了,就区分开了!
来源地址:https://blog.csdn.net/qq_44627822/article/details/128562873