You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot接口GET/POST返回404但H2数据库数据成功存入如何解决

问题根因

你当前控制器类使用的是@Controller注解,该注解默认是Spring MVC的页面控制器,方法的返回值会被解析为视图模板路径,你返回的Iterable<Expense>、字符串ok.都不是存在的视图模板路径,所以Spring找不到对应视图就返回404错误。而接口方法本身逻辑已经正常执行,所以你可以看到控制台打印数据库内容、POST请求的数据也能正常入库。

解决方案

方案1(推荐):替换控制器注解

将控制器类上的@Controller注解替换为@RestController,该注解是@Controller + @ResponseBody的组合注解,会直接将方法返回值序列化为JSON/纯文本写入HTTP响应体,不会走视图解析逻辑:

// 替换后的类注解
@RestController
@RequestMapping("/budget")
public class ExpenseController {
    // 原有逻辑保持不变
}

方案2:单独给接口方法加@ResponseBody注解

如果需要保留@Controller注解(比如部分方法确实需要返回视图),可以给需要直接返回数据的接口方法单独加@ResponseBody注解:

@GetMapping("/view")
@ResponseBody
public Iterable<Expense> viewAll(Model model) {
    System.out.println(expenseRepo.findAll());
    return expenseRepo.findAll();
}

@PostMapping
@ResponseBody
public String addExpense(@RequestBody Expense expense) {
    expenseRepo.save(expense);
    return "ok.";
}

提示:修改注解后重启项目,再次请求对应接口即可正常拿到响应结果。

内容的提问来源于stack exchange,提问作者Hasan Aga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 08:27:01