从零搭建第一个 SpringBoot REST 接口

SpringBoot 生态12 分钟2026-09-18

用最小可运行的项目结构理解控制器、依赖注入与自动配置,跑通第一个返回 JSON 的接口。

本文要点

  • 项目分层:controller / service / repository 各司其职
  • 用 @RestController 与 @GetMapping 暴露接口
  • 通过配置文件区分开发与生产环境
  • 用统一返回结构规范接口输出

很多初学者在学 SpringBoot 时,会被大量注解和配置劝退。其实一个可运行的接口服务,只需要很少的代码。这篇文章的目标是让你在半小时内跑通第一个返回 JSON 的接口,并理解每一行代码为什么存在。

先理解分层,再写代码

一个可维护的后端项目,通常把「接收请求」「处理业务」「访问数据」分开。控制器只负责接收参数与返回结果,业务逻辑放在服务层,数据访问交给仓储层。这样拆分之后,任何一层的变化都不会牵连其他层。

  • controller:解析请求参数、调用服务、组装响应
  • service:编排业务流程,不关心 HTTP 细节
  • repository:封装数据访问,屏蔽数据库差异

写出第一个接口

下面是一段最小控制器示例。启动应用后访问 /api/health,就能看到服务返回的 JSON。注意注解只做声明,真正的对象创建由容器完成,这就是依赖注入的价值。

java
1import org.springframework.web.bind.annotation.*;23@RestController4@RequestMapping("/api")5public class HealthController {67  private final HealthService healthService;89  public HealthController(HealthService healthService) {10    this.healthService = healthService;11  }1213  @GetMapping("/health")14  public ApiResponse health() {15    return ApiResponse.ok(healthService.status());16  }17}

统一返回结构

接口返回格式统一之后,前端处理错误会简单很多。建议固定 code、message、data 三个字段,成功与失败都走同一套结构,避免每个接口各写各的。

  • 成功时 code 为 0,data 携带业务数据
  • 失败时 code 非 0,message 给出可读提示
  • 不要把异常堆栈直接返回给前端

下一步做什么

跑通接口之后,建议接着补上参数校验、全局异常处理和接口文档,这三件事能让你的服务从「能跑」走向「好用」。完成后可以回到学习路线的进阶阶段,继续了解数据访问与事务。