12.3 RESTful API
概述
RESTful API(Representational State Transfer)是一种基于HTTP协议的软件架构风格,用于构建轻量级、可扩展的Web服务。它遵循REST原则,通过URI(统一资源标识符)定位资源,并使用HTTP方法(GET、POST、PUT、DELETE等)对资源进行操作。
RESTful API的核心原则
资源(Resource)
每个资源通过唯一的URI标识,例如:/users表示用户集合,/users/1表示ID为1的用户。HTTP方法
- GET:获取资源(查询)
- POST:创建资源
- PUT:更新资源(全量替换)
- PATCH:部分更新资源
- DELETE:删除资源
无状态(Stateless)
服务端不保存客户端状态,每次请求必须包含所有必要信息。统一接口
使用标准的HTTP方法和状态码(如200、404、500等)实现一致性。资源的表述(Representation)
资源可以以多种格式返回,如JSON、XML等,通常通过Content-Type和Accept头部协商。
设计RESTful API的步骤
定义资源
明确系统中的核心资源及其关系,例如:用户、订单、商品等。设计URI
- 使用名词而非动词(如
/users而非/getUsers) - 使用复数形式表示集合(如
/users) - 层级关系通过路径表达(如
/users/1/orders)
- 使用名词而非动词(如
选择HTTP方法
根据操作类型选择对应方法,例如:- 获取用户列表:
GET /users - 创建用户:
POST /users - 更新用户:
PUT /users/1 - 删除用户:
DELETE /users/1
- 获取用户列表:
定义请求和响应格式
- 请求体通常为JSON格式(如创建用户时提交的
{"name": "Alice"}) - 响应体包含资源数据及状态信息
- 请求体通常为JSON格式(如创建用户时提交的
处理错误
使用HTTP状态码和错误消息,例如:400 Bad Request:请求参数错误404 Not Found:资源不存在500 Internal Server Error:服务器内部错误
示例:用户管理API
获取用户列表
GET /users HTTP/1.1
Accept: application/json
响应:
[
{"id": 1, "name": "Alice"},
{"id": 2, "name": "Bob"}
]
创建用户
POST /users HTTP/1.1
Content-Type: application/json
{"name": "Charlie"}
响应(返回新创建的用户):
{"id": 3, "name": "Charlie"}
更新用户
PUT /users/3 HTTP/1.1
Content-Type: application/json
{"name": "Charles"}
响应:
{"id": 3, "name": "Charles"}
常用工具与框架
Spring Boot
通过@RestController和@RequestMapping等注解快速开发RESTful API。@RestController @RequestMapping("/users") public class UserController { @GetMapping public List<User> getUsers() { ... } @PostMapping public User createUser(@RequestBody User user) { ... } }JAX-RS
Java EE标准规范,常用实现如Jersey。@Path("/users") public class UserResource { @GET public List<User> getUsers() { ... } }Swagger/OpenAPI
用于API文档生成和测试。
最佳实践
- 使用版本控制(如
/v1/users) - 支持分页和过滤(如
/users?page=1&size=10) - 使用HTTPS保证安全性
- 实现认证与授权(如OAuth2、JWT)
- 提供清晰的文档和示例
总结
RESTful API是现代Web开发的核心技术之一,通过遵循统一的设计原则,可以构建出高效、易用且可维护的接口。结合Spring Boot等框架,开发者能够快速实现功能强大的API服务。
