Logo
Section 1 / 11

API 设计

学习图书管理API设计的关键要素,涵盖认证、授权以及CRUD操作。

导入

API 设计

学习图书管理API设计的关键要素,涵盖认证、授权以及CRUD操作。

在设计我们的 API 时,安全访问是首要考虑的因素之一。我们必须通过一个称为**认证(authentication)**的过程来验证用户的身份。
我们的应用应在认证方面满足以下重要要求:

  • API 必须实现认证机制,确保只有经过授权的用户才能访问特定的接口。

  • 用户每次请求时必须提供有效的 JWT 令牌以完成身份认证。

  • 若用户提供的令牌无效或已过期,API 应返回相应的错误信息。

在 API 验证用户身份后,还需根据其角色控制其操作权限,这一过程我们称之为授权(authorization)。
API 在授权方面应满足以下要求:

  • API 应基于用户的角色进行授权,以确定其可执行的操作。

  • 无论用户属于何种角色,只有经过认证的用户才可获取图书信息。

系统中的图书管理包括创建、读取、更新和删除图书。以下是图书管理的关键需求:

  • 只有具备管理员角色的用户才能在系统中创建、更新和删除图书。

  • 创建新图书时,必须填写特定的必填字段。

  • 当成功注册一本新书时,API 应返回该新建的图书信息。

  • 若必填字段缺失或数据不正确,API 必须返回适当的错误提示。

  • 所有已认证用户,无论角色如何,都应能够检索系统中已有的图书。

  • 用户在查询图书时,应支持按作者姓名进行筛选。

用户认证相关 API 接口

接口地址方法权限要求说明
/auth/registerPOST无需认证(面向未登录用户)允许用户在系统中注册新账户
/auth/loginPOST无需认证(面向未登录用户)允许用户登录系统并获取 JWT 令牌

图书管理相关 API 接口

接口地址方法权限要求说明
/api/booksGET已认证用户返回系统中所有图书的列表
/api/books/:idGET已认证用户返回指定 ID 的图书信息
/api/books?author=:authorGET已认证用户返回指定作者的所有图书
/api/booksPOST管理员用户在系统中创建一本新图书
/api/books/:idPUT管理员用户更新指定 ID 的图书信息
/api/books/:idDELETE管理员用户删除指定 ID 的图书

NestJS CLI

生成模块、控制器和服务