如何用Java在30分钟内编写REST API:逐步指南
创建REST API是现代Java开发人员的关键技能之一。REST(Representational State Transfer)允许构建轻量级、可扩展且易于理解的Web服务。在本指南中,我们将在30分钟内使用Spring Boot创建一个完整的REST API。您将学习如何配置项目、创建用于操作用户的端点、处理JSON以及通过Postman或浏览器测试API。
1. 什么是REST API以及为什么需要它?
REST API是一种架构风格,客户端和服务器通过HTTP请求交换数据。REST的主要原则:
- 资源 — 每个对象(用户、商品、订单)都由URL地址表示。
- HTTP方法 — GET(读取)、POST(创建)、PUT(更新)、DELETE(删除)。
- Stateless — 每个请求包含所有必要信息;服务器不存储会话状态。
- 数据格式 — 最常见的是JSON或XML。
REST API用于移动应用程序、Web前端、微服务和系统集成。在Java中,创建REST API最流行的框架是Spring Boot——它提供了现成的注解和自动配置。
2. 准备Spring Boot项目
首先您需要:
- JDK 17或更高版本
- IntelliJ IDEA或任何其他IDE
- Maven或Gradle
我们将使用Spring Initializr创建项目。选择:
- Project: Maven
- Language: Java
- Spring Boot: 3.2.0(或最新稳定版)
- Dependencies: Spring Web, Spring Boot DevTools
点击"Generate"并解压存档。在IDE中打开项目。结构将如下所示:
rest-api-demo/├── src/main/java/com/example/restapidemo/│ ├── RestApiDemoApplication.java│ └── controller/│ └── UserController.java├── src/main/resources/│ └── application.properties└── pom.xml3. 创建数据模型和控制器
让我们创建一个简单的User模型(在model包中的类):
package com.example.restapidemo.model;
public class User { private Long id; private String name; private String email;
public User() {}
public User(Long id, String name, String email) { this.id = id; this.name = name; this.email = email; }
// Getters and Setters 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; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; }}现在在controller包中创建UserController控制器。这是我们API的核心:
package com.example.restapidemo.controller;
import com.example.restapidemo.model.User;import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;import java.util.List;import java.util.concurrent.atomic.AtomicLong;
@RestController@RequestMapping("/api/users")public class UserController {
private final List<User> users = new ArrayList<>(); private final AtomicLong counter = new AtomicLong();
public UserController() { // 测试数据 users.add(new User(counter.incrementAndGet(), "Alice", "alice@example.com")); users.add(new User(counter.incrementAndGet(), "Bob", "bob@example.com")); }
// GET /api/users — 获取所有用户 @GetMapping public List<