在 Express.js 中实现多用户的 RESTful API

阅读时长 13 min read

Express.js 是 Node.js 环境下最流行的 Web 应用程序框架之一,其模块化和可插拔的结构使得其很容易实现 RESTful API。在本文中,我们将讨论如何在 Express.js 中实现多用户的 RESTful API。

需求分析

在实现多用户的 RESTful API 之前,我们需要确定具体的需求。在本例中,我们需要实现以下功能:

  1. 注册用户
  2. 用户登录
  3. 认证用户
  4. 实现 API 的 CRUD 操作

基于以上需求,我们需要实现以下 API:

  • POST /users:注册用户
  • POST /users/login:用户登录
  • GET /users/me:认证用户
  • POST /api:创建资源
  • GET /api/:id:获取资源
  • PATCH /api/:id:更新资源
  • DELETE /api/:id:删除资源

实现方法

  1. 创建应用程序

在创建应用程序之前,我们需要安装一些必须的依赖:

其中,express 是 Express.js 应用程序框架,body-parser 是用于解析请求体的中间件,jsonwebtoken 是用于生成和解码用户令牌的库,bcryptjs 是用于密码哈希和比较的库,mongoose 是 MongoDB 的对象文档映射(ODM)库,passportpassport-jwt 用于处理用户身份验证和 JSON Web Token。

在安装了必须的依赖之后,我们可以创建我们的应用程序。

在这个应用程序中,我们首先引入必要的依赖和配置,然后初始化 MongoDB 和 Passport.js。最后,我们引入用户和 API 的路由。

  1. 用户模型

在我们实现用户接口之前,我们需要先创建一个用户模型。

在这个模型中,我们定义了用户的名字,电子邮件地址,密码和创建日期。对于密码,我们将使用 bcryptjs 库对其进行哈希。

  1. 用户注册和登录

接下来,我们将实现用户注册和登录接口。

在这个路由中,我们引入了用户模型,验证注册和登录信息的中间件,以及生成 JSON Web Token 的库。在用户注册接口中,我们首先验证用户输入是否合法,然后检查是否存在同名用户。如果不存在同名用户,则将用户的密码哈希并保存到数据库中。在用户登录接口中,我们验证用户输入是否合法,然后在数据库中查找用户。如果用户存在,我们将检查输入的密码是否与数据库中的哈希匹配。如果匹配,我们将生成一个 JSON Web Token 并返回给客户端。

  1. API 模型

现在,我们将在数据库中创建一个名为 Api 的模型,用于表示我们的 API。

在这个模型中,我们定义了标题、描述、作者和创建日期。

  1. API 接口

最后,我们将实现用于管理 API 的接口。

在这个路由中,我们首先引入 API 模型和 Passport.js。在获取所有 API 接口中,我们使用 populate() 方法将 API 的作者信息展开。在创建 API 接口中,我们使用 passport.authenticate() 中间件验证用户是否已经登录。在更新和删除 API 接口中,我们还检查请求的用户是否是 API 的作者。

这样,我们就完成了在 Express.js 中实现多用户的 RESTful API 的过程。本例中的代码可以作为示例,帮助你快速入门 Express.js。同时,我们也希望本文对你在实现多用户的 RESTful API 中有所帮助。

Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/6780cf28ce7f4861254a5fe0