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