使用 Express.js 和 MongoDB 创建 RESTful API 的全过程

在现代 Web 开发中,构建 RESTful API 是一个非常重要的任务。它为客户端提供了一种能够轻松获取和更新数据的方式。在本文中,我们将探讨如何使用 Express.js 和 MongoDB 构建 RESTful API。

准备工作

在开始编写代码之前,我们需要先安装下列工具:

  • Node.js 和 npm
  • MongoDB

如果你还没有安装它们,请按照官方文档的说明进行安装。

创建项目

首先,我们需要创建一个新项目。打开终端,通过以下命令可以创建一个新的项目目录:

----- ----------------------
-- ----------------------

接下来,在项目目录中执行以下命令来初始化一个新的 Node.js 项目:

--- ----

随后,你可以根据自己的需求填写一些基本信息,如项目名称、版本号等。此外,还需将以下依赖项添加到项目中:

  • express:用于构建 RESTful API 的 Web 框架。
  • mongoose:用于与 MongoDB 数据库进行交互的库。
  • body-parser:用于解析 HTTP 请求的正文部分。
  • nodemon:用于自动重启服务器来方便开发调试。

你可以通过以下命令完成以上操作:

--- - ------- -------- ----------- ------- ------

配置数据库

在继续编写代码之前,我们需要配置数据库并创建示例数据。

首先,我们需要启动 MongoDB 数据库服务。在控制台中执行以下命令:

------

接下来,我们需要创建一个新的数据库,比如 test,你可以根据自己的需求修改名称。通过以下命令可以创建一个新的数据库:

-----
- --- ----

现在我们需要创建一个新的集合(相当于 SQL 中的表),比如 users。可以使用以下命令进行创建:

----------------------------

然后,我们可以向集合中插入示例数据。可以使用以下命令插入一条示例数据:

----------------- ----- -------- ---- -- --

编写代码

现在我们可以开始编写代码了。在项目目录中创建一个新的 index.js 文件,你可以使用以下代码初始化一个新的 Express 应用程序:

----- ------- - ------------------
----- ---------- - ----------------------
----- -------- - -------------------

----- --- - ---------
----- ---- - ---------------- -- ---- -- -----

-- -----
--------------------------------------------

-- -- ----------- ---
------------------------------- --------- ---- ---
--------------------------

-- -------
----- ---- - ---------------------- -
  ----- -------
  ---- ------
--

-- ----
----- ------ - ----------------
--------------- ----- ---- -- -
  ---------- -------- ---- ------ --
--
----------------------
  -- ------
  ---------- ---- -- -
    --------------- ------ -- -
      -- ----- - ------------- -
      ---------------
    --
  --
  -- -----
  ----------- ---- -- -
    ----- ---- - --- ------
    --------- - -------------
    -------- - ------------
    --------------- -- -
      -- ----- - ------------- -
      ---------- -------- ----- -------- --
    --
  --
-------------------------------
  -- ------
  ---------- ---- -- -
    --------------------------------- ----- ----- -- -
      -- ----- - ------------- -
      --------------
    --
  --
  -- ------
  ---------- ---- -- -
    --------------------------------- ----- ----- -- -
      -- ----- - ------------- -
      --------- - -------------
      -------- - ------------
      --------------- -- -
        -- ----- - ------------- -
        ---------- -------- ----- -------- --
      --
    --
  --
  -- ----
  ------------- ---- -- -
    ------------- ---- ------------------ -- ----- ----- -- -
      -- ----- - ------------- -
      ---------- -------- ----- -------- --
    --
  --

-- ----
--------------- -------

-- -----
---------------- -- -- ---------------------- -- ---- ----------

让我们来分析一下这段代码:

  1. 第 1 行引入了 Express.js 库。
  2. 第 2 行引入了 body-parser 库,用于解析 HTTP 请求的正文部分。
  3. 第 3 行引入了 mongoose 库,用于与 MongoDB 数据库进行交互。
  4. 第 5-6 行创建了一个新的 Express 应用程序,并定义了服务器的端口号。
  5. 第 9 行通过 mongoose.connect() 方法连接 MongoDB 数据库。请记住将 URL 更改为您自己的数据库 URL。
  6. 第 12-13 行使用 app.use() 方法将 body-parser 中间件注册到应用程序中,以便解析请求正文。
  7. 第 16-19 行定义了一个名为 User 的数据库模型,它将用于与 MongoDB 集合中的文档进行交互。
  8. 第 22-38 行定义了一个名为 router 的新路由器,并定义了下列固定路由:
    • /:GET 请求,返回 JSON 数据,标识 API 服务正在运行。
    • /users:HTTP 客户端可以通过 GET、POST 方法访问该路由,以获取所有用户、创建新用户。
    • /users/:user_id:HTTP 客户端可以通过 GET、PUT 和 DELETE 方法访问该路由,以获取、更新和删除单个用户。
  9. 第 41-42 行使用 app.use() 方法将路由器注册到应用程序中,并使用 /api 前缀指定了路由器的根路径。
  10. 第 45 行启动 Express 应用程序并指定端口号。

测试 API

现在我们已经编写了完整的 API 代码,我们可以通过 Postman、curl、浏览器或其他任何 HTTP 客户端对其进行测试。

我们可以运行以下命令来启动服务器:

------- --------

你应该能够看到一条消息,“Listening on port 3000”。

接下来,打开 Postman,输入如下 URL:

-------------------------------

现在你应该可以看到所有项目的用户数据。在 Postman 中,你还可以使用其他请求方法、参数和正文来测试每个路由。

总结

本文演示了如何使用 Express.js 和 MongoDB 构建 RESTful API,同时也演示了如何对其进行测试。

考虑到本文中的示例非常简单,但是,它已经可以帮助开发人员了解如何使用 Node.js、Express.js 和 MongoDB 开发现代 Web 应用程序。

最后,我们鼓励你自己动手开发一个 RESTful API,以提高自己的编程技能。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/64d38345b5eee0b525b26b67


猜你喜欢

  • CSS Flexbox 布局实现三列布局的难点与解决方案

    在前端开发中,三列布局是一种常见的布局方式,可以用来实现多种网页设计的需求。其中,CSS Flexbox 布局是实现三列布局的常见方式之一,但也会遇到一些难点。在本文中,我们将探讨这些难点并提供相应的...

    1 年前
  • ES10 中的 Array.prototype.sort():排序稳定性问题修复

    JavaScript 中的 Array.prototype.sort() 方法被广泛地应用于数组排序操作。然而,早期的 JavaScript 引擎对于该方法的排序算法并没有强制规定,导致了在不同的环境...

    1 年前
  • ECMAScript 2018 中的 Intl.NumberFormat 实现数字格式化

    在前端开发中,数字格式化是一个经常需要处理的问题。比如在页面中展示货币、时间、数量等数据时,经常需要对数字进行格式化,以符合不同的国家、地区的不同的显示方式和习惯。

    1 年前
  • 在 Deno 中如何使用 WebSocket 服务器?

    WebSocket 是一种基于 TCP 的网络通信协议,它在客户端和服务器之间建立持久性的双向连接,实现了实时数据交互。而 Deno 是一个安全的 TypeScript 运行时环境,用于开发服务器端 ...

    1 年前
  • ES6 中使用 let 和 const 关键字代替 var 的优势解析

    在前端开发中,我们经常会用到变量来存储数据或者临时值。在 ES5 中,我们通常使用 var 关键字来声明变量。但是在 ES6 中引入了 let 和 const 关键字来代替 var,它们有什么优势呢?...

    1 年前
  • 使用 Hapi-Inert 插件处理静态文件

    在 Web 开发中,静态文件处理是必不可少的一部分。这些文件通常包括样式表、脚本、图像以及其他资源,而且通常无需进行相应的处理,因此直接从服务器端提供即可。在 Hapi 框架中,我们可以使用 Hapi...

    1 年前
  • 如何使用 Java 创建 RESTful API

    REST(Representational State Transfer)是一种基于 HTTP 协议的轻量级 Web 架构,可以用于创建可维护、可伸缩的 Web 应用程序。

    1 年前
  • ESLint - 如何更好的使用 ESLint

    前言 ESLint 是一个为 JavaScript 代码提供静态分析的开源工具。它利用了 AST(Abstract Syntax Tree,抽象语法树) 来分析代码中的语法错误、质量问题和编码规范问题...

    1 年前
  • Babel7:如何转换 ES6 成 ES5 以便让老旧的浏览器也能使用

    在当今的 Web 开发中,使用 ES6(ECMAScript 2015)已成为前端工程师的标配,但是一些老旧的浏览器并不支持 ES6。Babel 是一个流行的转换工具,它可以将 ES6 代码转换为 E...

    1 年前
  • 使用 Docker Compose 部署 Flask 应用程序

    Docker Compose 是一个用于定义和运行多个 Docker 容器的工具,它可以帮助我们快速地部署各种应用程序。在本文中,我们将使用 Docker Compose 来部署一个基于 Flask ...

    1 年前
  • TypeScript:如何避免循环引用的问题?

    前言 在 TypeScript 项目中,循环引用是一种常见的问题。循环引用指的是在 A 模块中引用了 B 模块,而 B 模块又引用了 A 模块。这种情况下,编译器无法正确地解析依赖关系,导致编译错误。

    1 年前
  • 使用 Chai 和 Sinon 结合进行 JavaScript 单元测试

    前言 随着前端技术的不断发展和应用场景的扩大,JavaScript 代码的质量也变得越来越重要。为了保证 JavaScript 代码的正确性和可靠性,在代码编写的同时进行单元测试就变得非常重要。

    1 年前
  • Promise 的 then 方法和 catch 方法详细介绍

    Promise 的 then 方法和 catch 方法详细介绍 Promise 是一种非常重要的 JavaScript 编程概念,它可以处理异步操作的结果,保证了 JavaScript 程序的正确性和...

    1 年前
  • 用 ES12 中的 Array.prototype.flatMap 方法降低代码复杂度!

    在前端开发中,针对数组的操作是非常常见的,特别是在一些数据处理、数据转换等场景下。在 ES12 中,新增了一个很实用的数组方法: Array.prototype.flatMap()。

    1 年前
  • LESS 与 CSS 的区别及优劣分析

    CSS 是前端开发中必不可少的一部分,用来定义网站的样式。然而,随着网站越来越复杂,CSS 代码也越来越庞大,维护和管理变得困难。LESS 作为一种 CSS 预处理器,通过引入变量、函数等特性,使得 ...

    1 年前
  • 使用 Laravel 构建高性能 Web 应用

    作为一名前端开发者,构建高性能 Web 应用一直是我们的目标之一。在这篇文章中,我们将介绍如何使用 Laravel 这个 PHP 开发框架来构建高性能的 Web 应用。

    1 年前
  • 使用 Fastify 框架处理大量的 API 请求

    在现代 Web 开发中,处理大量的 API 请求已成为了前端开发的一部分。在这个过程中,我们需要选择一个高效且可扩展的框架来处理我们的请求。Fastify 就是这样一种框架,它是一个快速、低开销的 N...

    1 年前
  • SSE 技术在网页聊天系统中的应用

    近年来,在网页聊天系统中使用 SSE 技术已经成为了一种高效且可靠的方式。SSE(Server-Sent Events)通过一对持久化 HTTP 连接从服务器向客户端推送实时数据。

    1 年前
  • Cypress 测试报告:如何生成美观的测试报告

    什么是 Cypress? Cypress 是一个用于创建端到端测试 (E2E) 的 JavaScript 测试框架。Cypress 提供了一组强大的工具,让开发人员可以轻松地编写、运行和调试测试用例。

    1 年前
  • 使用 Mocha 和 Istanbul 进行代码覆盖率测试

    标题:使用 Mocha 和 Istanbul 进行代码覆盖率测试 前言: 在前端开发中,进行代码覆盖率测试是非常必要的,它可以有效地帮助我们评估测试的质量,从而对代码进行优化和改进。

    1 年前

相关推荐

    暂无文章