使用Insomnia调用SpringBoot微服务时出现Error 404 Not Found问题
排查SpringBoot微服务GET请求404问题
我正在学习SpringBoot,尝试基于PostgreSQL和SpringBoot搭建一个简单微服务。当使用Insomnia发送GET请求至路径/postgres/all时,收到如下404响应:
{ "timestamp": "2023-08-22T16:25:43.756+00:00", "status": 404, "error": "Not Found", "message": "No message available", "path": "/postgres/all" }
相关代码如下:
业务方法
@Override public List<Person> selectAll() { String query = "SELECT * FROM PERSON"; return jdbcTemplate.query(query, new BeanPropertyRowMapper<>(Person.class)); }
控制器代码
@RestController @RequestMapping("/postgres") public class PersonController { private AppService appService; @GetMapping(value = ("/all"), produces = {MediaType.APPLICATION_JSON_VALUE}) public ResponseEntity<List<Person>> selectAll() { return new ResponseEntity<>(appService.selectAll(), HttpStatus.OK); } @PostMapping(value = ("/ins"), produces = {MediaType.APPLICATION_JSON_VALUE}) public ResponseEntity<Person> insert(@RequestBody Person person) throws ClassNotFoundException { return new ResponseEntity<>(appService.insert(person), HttpStatus.OK); } }
数据库连接配置
@Configuration public class Connect { @Value("postgres") String username; @Value("postgres") String password; @Value("jdbc:postgresql://localhost:5432/postgres") String url; public DataSource postgresConfig() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setUsername(username); dataSource.setPassword(password); dataSource.setUrl(url); return dataSource; } }
Insomnia请求截图:
排查方向
- 控制器扫描范围问题:检查
PersonController所在包是否在SpringBoot主类的扫描范围内。@SpringBootApplication默认扫描自身包及其子包,若控制器在外部包,需添加@ComponentScan指定扫描路径。 - 依赖注入缺失:
PersonController中的appService未使用@Autowired或构造函数注入,虽不会直接导致404,但可能引发控制器初始化异常,需补充注入注解。 - 路径语法问题:
@GetMapping中value = ("/all")的括号属于冗余写法,虽语法合法,但可能导致路径解析异常,建议改为@GetMapping("/all")。 - Bean定义缺失:数据库配置类
Connect的postgresConfig方法未添加@Bean注解,Spring无法识别该数据源Bean,若服务启动异常可能间接引发404。 - 端口与上下文路径不匹配:确认Insomnia请求的端口是否与SpringBoot应用启动端口一致;若配置了
server.servlet.context-path,请求需加上该前缀(如/context/postgres/all)。 - 控制器方法异常:若
selectAll方法存在未捕获的初始化异常,可能导致映射失效,但此类情况通常会伴随其他错误日志,需结合启动日志排查。
内容的提问来源于stack exchange,提问作者GreatTeacherNullPointer
相关产品推荐
相关产品推荐

