使用 Spring Boot 实现 RESTful Web API
Source: Dev.to
RESTful API?
REST(Representational State Transfer)是一种定义创建可伸缩 Web 服务规则的架构风格。REST API 使用以下 HTTP 方法:
- GET – 检索数据
- POST – 创建数据
- PUT – 更新数据
- DELETE – 删除数据
REST API 是 无状态 的,这意味着每个请求都是独立的,并且包含所有必需的信息。
我们将构建什么?
我们将使用 Spring Boot 构建一个 任务跟踪器 REST API。目标是设计一个简洁、意义明确且可投入生产的 API,帮助用户高效管理日常任务。
我们将构建的端点(用例)
| 端点 | HTTP 方法 | 用例 |
|---|---|---|
POST /api/tasks | 创建任务 | 添加一个包含标题、描述、类别且默认状态为 PENDING 的新任务 |
GET /api/tasks | 获取所有任务 | 检索系统中所有可用的任务 |
GET /api/tasks/{id} | 根据 ID 获取任务 | 使用任务 ID 获取单个任务的详细信息 |
PUT /api/tasks/{id} | 更新任务 | 修改任务的标题、描述、类别或状态等信息 |
DELETE /api/tasks/{id} | 删除任务 | 将任务从系统中移除 |
GET /api/tasks/status/{status} | 按状态获取任务 | 根据任务状态过滤任务——PENDING、COMPLETED |
使用的数据库:H2 内存数据库
为简化演示,我们使用 H2,它提供:
- 零安装
- 自动控制台 UI
- 开发快速
- 测试方便
注意:应用重启后会重置数据库,非常适合教程使用。
分层架构概览
一个干净且易维护的 REST API 采用分层架构,主要包括三层:
- Controller(控制器) – 处理进入的 API 请求。
- Service(服务) – 包含业务逻辑。
- Repository(仓库) – 管理数据库交互。
项目结构
项目设置
1. 创建一个新的 Spring Boot 项目
前往 Spring Initializr 并配置项目:
- Project:Maven
- Language:Java
- Spring Boot Version:最新稳定版
- Group:
com.example(或你喜欢的包名) - Artifact:
task-tracker-api - Name:
Task Tracker API - Packaging:Jar
- Java Version:17 或更高
2. 添加所需依赖
勾选以下依赖:
- Spring Web – 创建 REST 控制器并暴露 HTTP 端点。
- Spring Data JPA – 基于 ORM 的数据库交互。
- H2 Database – 轻量级内存数据库,适用于开发/测试。
- Lombok – 减少样板代码(getter、setter、构造函数等)。

生成项目后解压,并在你的 IDE(IntelliJ IDEA、Eclipse、VS Code 等)中打开。
3. 运行应用
找到主类 TaskTrackerApiApplication.java 并运行。你应该会看到类似的日志行:
Started TaskTrackerApiApplication in X seconds
至此,Spring Boot 应用已启动。
控制器层
在 controller 包下创建 TaskController 类。该层负责处理进入的 HTTP 请求并向客户端返回响应。
package com.arshadpatel.task_tracker_api.controller;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TaskController {
// 1. 创建任务
// 2. 获取所有任务
// 3. 根据 ID 获取任务
// 4. 更新任务
// 5. 删除任务
// 6. 按状态获取任务
}
模型
在 model 包下创建 Task.java。
package com.arshadpatel.task_tracker_api.model;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
public class Task {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
private String status;
}
注解含义
@Data– 生成 getter、setter、toString()、equals()与hashCode()。@NoArgsConstructor– 无参构造函数。@AllArgsConstructor– 全参构造函数。@Entity– 将类标记为 JPA 实体(数据库表)。@Id– 主键。@GeneratedValue– 自动生成主键值。
仓库和服务层
仓库
package com.arshadpatel.task_tracker_api.repository;
import com.arshadpatel.task_tracker_api.model.Task;
import org.springframework.data.jpa.repository.JpaRepository;
public interface TaskRepository extends JpaRepository<Task, Long> {
}
服务
package com.arshadpatel.task_tracker_api.service;
import com.arshadpatel.task_tracker_api.model.Task;
import com.arshadpatel.task_tracker_api.repository.TaskRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class TaskService {
@Autowired
private TaskRepository taskRepository;
// 1. 创建任务
// 2. 获取所有任务
// 3. 根据 ID 获取任务
// 4. 更新任务
// 5. 删除任务
// 6. 按状态获取任务
}
连接控制器和服务
在控制器中实现第一个 API 方法——创建任务。实现后,你可以使用 Postman 或其他 API 客户端发送 POST 请求并携带 JSON 请求体进行测试。
package com.arshadpatel.task_tracker_api.controller;
import com.arshadpatel.task_tracker_api.model.Task;
import com.arshadpatel.task_tracker_api.service.TaskService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api/tasks")
public class TaskController {
@Autowired
private TaskService taskService;
@PostMapping
public Task createTask(@RequestBody Task task) {
// 调用服务层保存任务
return taskService.createTask(task);
}
// 其余端点实现请继续在此添加...
}
继续按照相同的模式实现剩余的端点(GET、PUT、DELETE 等),将核心业务逻辑委托给 TaskService。当所有方法全部就位后,你将拥有一个使用 Spring Boot 完全可用的任务跟踪器 REST API。
