配置@DeleteMapping后调用DELETE接口提示No mapping for DELETE如何解决
问题排查清单
你遇到的No mapping for DELETE /stock-ws/vente/1错误本质是Spring MVC没有匹配到对应DELETE方法的请求路径,按以下优先级排查:
- 检查项目上下文路径配置
确认application.properties/yml中是否配置了server.servlet.context-path=/stock-ws,如果未配置该参数,项目默认上下文路径为空,正确请求地址应为http://localhost:8080/vente/1,你当前请求加了/stock-ws前缀自然匹配不到。 - 核对路径拼接结果
先打印ConstantController.VENTE的实际值,确认拼接后的完整路径是否符合预期:- 如果Controller类上没有加
@RequestMapping前缀,ConstantController.VENTE的值应为/vente,拼接后完整路径是/vente/{venteId} - 如果Controller类上配置了
@RequestMapping前缀,需要将前缀也加入路径计算,比如类上配了/stock-ws的话要对应调整
注意避免多斜杠/少斜杠的问题,比如VENTE值为vente(没有前导斜杠)同时类上也没有前缀的话,最终路径会不合法。
- 如果Controller类上没有加
- 确认Controller类是否被Spring扫描
检查你的DELETE方法所在类是否加了@RestController/@Controller注解,同时确认启动类的@ComponentScan扫描范围包含该类所在的包,若类没有被Spring注册为Bean,内部的接口映射自然不会生效。 - 排查端口占用问题
确认8080端口当前运行的就是你正在调试的项目,避免本地同时启动多个同端口项目,请求被转发到其他项目导致匹配不到映射。 - 检查请求方法是否正确
确认你发请求时用的是标准DELETE方法,部分测试工具如果配置错误会偷偷把DELETE转成GET/POST,也会出现匹配失败的情况。
内容的提问来源于stack exchange,提问作者Jhonathan Martini
相关产品推荐
相关产品推荐

