Spring Boot 3.0.3项目中REST Controller无法识别导致接口404问题求助
Spring Boot 3.0.3项目中REST Controller无法识别导致接口404问题求助
嗨,我仔细看了你的代码和运行日志,很快就找到问题所在啦!
你遇到的404问题,核心原因是Controller里的@RequestMapping和@GetMapping注解用错了属性:你用了name属性来指定接口路径,但name只是给这个请求映射设置一个识别名称,根本不是用来定义URL路径的!正确的路径属性应该是value或者path(而value是注解的默认属性,甚至可以省略不写)。
看你的原Controller代码:
@RestController @RequestMapping(name = "/api/v1") public class ModelMockerController { @GetMapping(name = "/mock") public String hello(){ return "Hello"; } }
把它改成下面这样就可以了:
@RestController @RequestMapping("/api/v1") // 这里直接写路径,等价于@RequestMapping(value = "/api/v1") public class ModelMockerController { @GetMapping("/mock") // 同理,直接写路径 public String hello(){ return "Hello"; } }
另外补充说明一下:你的项目包结构是没问题的——主启动类Water4AgriFoodMockApplication在org.crea.water4agrifoodmock根包,Controller在子包org.crea.water4agrifoodmock.controller,@SpringBootApplication注解默认会自动扫描主类所在包及其所有子包的组件,所以你之前尝试加scanBasePackages其实是多余的,根本不是扫描的问题哦。
修改完代码后重启项目,你会在日志里看到RequestMappingHandlerMapping的映射数增加,包含你定义的/api/v1/mock路径,这时候用Postman访问http://localhost:8080/api/v1/mock就能正常拿到"Hello"响应啦!
备注:内容来源于stack exchange,提问作者Gianni Spear
相关产品推荐
相关产品推荐

