导入
API 设计
学习图书管理API设计的关键要素,涵盖认证、授权以及CRUD操作。
在设计我们的 API 时,安全访问是首要考虑的因素之一。我们必须通过一个称为**认证(authentication)**的过程来验证用户的身份。
我们的应用应在认证方面满足以下重要要求:
-
API 必须实现认证机制,确保只有经过授权的用户才能访问特定的接口。
-
用户每次请求时必须提供有效的 JWT 令牌以完成身份认证。
-
若用户提供的令牌无效或已过期,API 应返回相应的错误信息。
在 API 验证用户身份后,还需根据其角色控制其操作权限,这一过程我们称之为授权(authorization)。
API 在授权方面应满足以下要求:
-
API 应基于用户的角色进行授权,以确定其可执行的操作。
-
无论用户属于何种角色,只有经过认证的用户才可获取图书信息。
系统中的图书管理包括创建、读取、更新和删除图书。以下是图书管理的关键需求:
-
只有具备管理员角色的用户才能在系统中创建、更新和删除图书。
-
创建新图书时,必须填写特定的必填字段。
-
当成功注册一本新书时,API 应返回该新建的图书信息。
-
若必填字段缺失或数据不正确,API 必须返回适当的错误提示。
-
所有已认证用户,无论角色如何,都应能够检索系统中已有的图书。
-
用户在查询图书时,应支持按作者姓名进行筛选。
用户认证相关 API 接口
| 接口地址 | 方法 | 权限要求 | 说明 |
|---|---|---|---|
| /auth/register | POST | 无需认证(面向未登录用户) | 允许用户在系统中注册新账户 |
| /auth/login | POST | 无需认证(面向未登录用户) | 允许用户登录系统并获取 JWT 令牌 |
图书管理相关 API 接口
| 接口地址 | 方法 | 权限要求 | 说明 |
|---|---|---|---|
| /api/books | GET | 已认证用户 | 返回系统中所有图书的列表 |
| /api/books/:id | GET | 已认证用户 | 返回指定 ID 的图书信息 |
| /api/books?author=:author | GET | 已认证用户 | 返回指定作者的所有图书 |
| /api/books | POST | 管理员用户 | 在系统中创建一本新图书 |
| /api/books/:id | PUT | 管理员用户 | 更新指定 ID 的图书信息 |
| /api/books/:id | DELETE | 管理员用户 | 删除指定 ID 的图书 |