HTTP 与 REST
约 581 字大约 2 分钟
布欧-Lewyon
2026-05-16
首页 › Java › Web 基础 › HTTP 与 REST
HTTP 是 Web 的传输协议,REST 是基于 HTTP 的一种 API 设计风格。理解这两者是后端开发的基本功。
HTTP 方法
| 方法 | 含义 | REST 对应操作 | 幂等 | 安全 |
|---|---|---|---|---|
GET | 获取资源 | 查询 | ✅ | ✅ |
POST | 提交数据 | 创建 | ❌ | ❌ |
PUT | 整体替换 | 更新(全量) | ✅ | ❌ |
PATCH | 部分更新 | 更新(部分) | ❌ | ❌ |
DELETE | 删除资源 | 删除 | ✅ | ❌ |
- 幂等:多次相同请求产生的结果相同。
- 安全:不修改服务器状态(只读)。
REST 资源设计示例
GET /api/users # 获取用户列表
GET /api/users/{id} # 获取单个用户
POST /api/users # 创建用户
PUT /api/users/{id} # 整体更新用户
PATCH /api/users/{id} # 部分更新用户
DELETE /api/users/{id} # 删除用户命名规范:复数名词、全小写、短横线分隔。
HTTP 状态码
| 范围 | 含义 | 常见码 |
|---|---|---|
| 2xx | 成功 | 200 OK、201 Created、204 No Content |
| 3xx | 重定向 | 301 永久移动、302 临时移动、304 未修改 |
| 4xx | 客户端错误 | 400 Bad Request、401 Unauthorized、403 Forbidden、404 Not Found |
| 5xx | 服务端错误 | 500 Internal Server Error、502 Bad Gateway、503 Service Unavailable |
JSON
JSON(JavaScript Object Notation)是 Web API 最广泛使用的数据格式。Java 中常用 Jackson 或 Gson 进行序列化/反序列化。
{
"id": 1,
"name": "Alice",
"email": "alice@example.com",
"tags": ["admin", "user"]
}Maven 引入 Jackson:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.2</version>
</dependency>// 对象 → JSON
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(user);
// JSON → 对象
User user = mapper.readValue(json, User.class);Jackson 默认通过 getter(序列化)和无参构造器 + setter(反序列化)工作。日期类型需额外配置格式。
小结
- HTTP 方法:GET(查)、POST(增)、PUT(全量改)、PATCH(部分改)、DELETE(删)。
- RESTful API 用资源名词(复数)设计 URL,利用 HTTP 方法表达操作语义。
- 状态码:2xx 成功、4xx 客户端错误、5xx 服务端错误。
- JSON 是主流的 API 数据格式,Java 中用 Jackson 或 Gson 处理。
- 易错:PUT 是幂等的,PATCH 不是;GET 请求不应修改服务器状态。在设计 API 时使用正确的 HTTP 方法比在 URL 中用
/createUser、/deleteUser更规范。 - 思考任务:设计一个博客系统的 RESTful API 接口(文章 CRUD、评论、标签),列出 URL、方法和对应的状态码。
上一节:SLF4J 与 Logback
