我有一個基本的 SpringBoot 2.0.6.RELEASE 應(yīng)用程序。使用 Spring Initializer、JPA、嵌入式 Tomcat、Thymeleaf 模板引擎,并打包為具有 Restful 架構(gòu)的可執(zhí)行 JAR@PutMapping(path = "/users/alarms2", consumes = "application/json", produces = "application/json") public void setAlerts2(@RequestHeader(value = "Authorization") String authHeader, @RequestBody AlertConfiguration alertConfiguration) throws DataAccessException, ClientProtocolException, SQLException, IOException {..}但是當(dāng)我從 curl 調(diào)用這個方法時:curl -X PUT -H "Content-Type: application/json" -H "Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJyaWNhcmQub2SAsZUBnbWFpbC5jb20iLCJleHAiOjE2MDAxODMzNDAsImlhdCI6MTUzOTcwMzM0MH0.2gbyyGnkcoHjOw7HbUBBQgb59Bw8iAyFbqTe2DPUlOA-V5UwrW3KXWHZlXssZni8oRJ_o1QRzAFtAWMfz7f0Yw" -d ‘{“symbol": “MENU”, "alarmKey”:”VEGAN” , "enabled": "true"}' "http://95.90.225.68:1133/restos/api/v1/users/alarms2"我在服務(wù)器中收到此錯誤:2018-10-17 17:16 [http-nio-1133-exec-9] WARN o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver.resolveException(140) - Resolved [org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'long'; nested exception is java.lang.NumberFormatException: For input string: "alarms2"]
1 回答

LEATH
TA貢獻1936條經(jīng)驗 獲得超7個贊
您可能有另一種具有更通用簽名的方法,該方法與給定的簽名重疊。就像是:
@PutMapping(path = "/users/{userId}", ...)
public void someMethod(@PathVariable(value = "userId") Long userId) {
...
}
因此,當(dāng)您使用/api/v1/users/alarms2Spring 時,首先嘗試將“alarms2”(顯然不是有效的Long)轉(zhuǎn)換為userId(是Long)
添加回答
舉報
0/150
提交
取消