搭建Spring Boot REST API后请求返回404 Not Found问题求助
Spring Boot REST API 404 Not Found 排查与解决
以下是针对你遇到的404问题的常见排查方向,结合你提供的代码逐一分析:
1. 配置文件名称错误
你的配置文件命名为file.properties,但Spring Boot默认只会加载名为application.properties(或application.yml)的配置文件。这会导致你配置的server.port=8082不生效,项目实际使用默认端口8080,此时访问http://localhost:8082/api/user自然会返回404。
解决方法:将配置文件重命名为application.properties,重启项目后尝试访问对应端口的接口。
2. Controller未被Spring扫描到
Spring Boot默认只会扫描启动类所在包及其子包下的组件。如果你的UserController所在的包与启动类的包层级不匹配(比如启动类在com.example.demo,而Controller在com.example.api),Spring无法识别该Controller,也就不会注册对应的接口路径。
解决方法:
- 调整包结构,将
UserController移到启动类的同级或子包下; - 在启动类上添加
@ComponentScan注解,指定Controller所在的包路径,例如:
@SpringBootApplication @ComponentScan(basePackages = "com.example.api") // 替换为你的Controller实际所在包 public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
3. 请求路径或HTTP方法不匹配
检查Postman的请求细节:
- 确认请求方法是否正确:比如用
POST请求访问GET接口(/api/user的GET方法用于查询所有用户,POST用于创建用户); - 确认路径是否准确:避免多写/少写斜杠、大小写错误(Spring Boot路径默认不区分大小写,但建议严格匹配);
- 如果是带参数的请求(比如
/api/user/{id}),确认路径中的id是合法的数字格式。
4. 项目启动异常
查看项目启动日志,确认以下信息:
- 是否有类似
Mapped GET "/api/user" onto public java.util.List<xxx.User> xxx.UserController.findAllUsers()的日志,若没有说明Controller未被注册; - 是否有数据库连接失败的错误日志(比如用户名密码错误、数据库未启动),若数据库连接失败导致项目启动不完全,也会导致接口无法访问。
额外提示:实体类序列化问题
你的User实体类没有添加getter/setter方法,虽然这不会直接导致404,但当你发送POST请求创建用户时,Spring无法正常反序列化请求体中的数据,会返回400错误。建议为User类添加getter和setter:
@Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; private String name; // 添加getter和setter public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
内容的提问来源于stack exchange,提问作者Khaled El Attar
相关产品推荐
相关产品推荐

