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”) 这个样就不一样了,就区分开了!

相关链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: