使用 Express.js 搭建 RESTful API

AI 编程助手,豆包旗下的编程助手,提供智能补全、智能预测、智能问答等能力,节省开发时间,释放脑海中的创造力,支持 VSCode,点击体验 AI

RESTful API 是现代 Web 应用程序的基础部分,它是一种使用 REST (Representational State Transfer) 架构风格来设计 Web 服务的 API。RESTful API 是一种高可扩展性、高灵活性、简单易用和跨平台的 API 设计方案。在本文中,我们将使用 Express.js 来构建一个简单的 RESTful API,以便您可以学习如何设计和实现 RESTful API。

1. 简介

Express.js 是一个基于 Node.js 平台的 Web 应用程序框架,它提供了一组强大的基于中间件的工具,可以帮助您创建可重用的 Web 应用程序组件。Express.js 提供了一个优雅的 API 用于构建 Web 应用程序和 RESTful API,它非常灵活、易于使用,同时性能也非常出色,是一个非常流行的 Web 框架。

2. 安装与配置

在开始使用 Express.js 建立 RESTful API 之前,我们需要先安装和配置 Express.js。

首先,在命令行中创建一个新的项目目录,然后使用 npm 进行初始化:

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

然后,安装 Express.js:

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

接下来,我们需要创建一个简单的 Express.js 应用程序。创建一个新的 js 文件——app.js:

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

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

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

这个应用程序只有一个路由,即 "/". 当用户访问 "/" 路径时,应用程序将返回 "Hello World!"。启动这个应用程序:

---- ------

现在,访问本地的 localhost:3000,就可以看到 "Hello World!" 了。

3. 创建 RESTful API

现在我们开始构建我们的 RESTful API。

3.1 创建路由

在 Express.js 中,路由是用于处理请求和返回响应的模块。我们需要创建一组路由来实现 RESTful API 的基础架构。

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

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

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

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

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

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

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

如上代码所示,我们创建了一组处理不同 REST 动作的路由。例如,GET /items 表示获取所有 items 的 API,管理员可以使用该 API 获取所有 item 的列表。GET /items/:id 表示获取 item 的具体信息,包含了一个参数:item 的 ID,利用该参数可以查询指定的 item 信息。

3.2 处理请求

接下来,我们需要实现每个路由所处理的请求。我们可以通过 Node.js 模拟数据处理,来完成这个步骤。

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

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

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

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

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

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

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

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

如上代码所示,我们通过引入 fake 数据的方式,实现了每个路由所需的处理请求。其中 GET /items 返回 items 数组,GET /items/:id 返回该 ID 所对应的 item 信息,POST /items 处理的是新增 item 信息,PUT /items/:id 处理的是更新 item 信息,DELETE /items/:id 处理删除 item 操作。对于每个请求,我们都做了各种空值判断、合法性校验和错误处理。

4. 测试 RESTful API

现在我们已经成功地创建了一个 RESTful API,但还需要测试它的可靠性和稳定性。

我们可以使用 Postman 或者 curl 命令来测试 RESTful API。

以下是一些测试栗子:

  • GET localhost:3000/items : 获取所有 items
  • GET localhost:3000/items/1 : 获取 ID 为 1 的 item
  • POST localhost:3000/items?name=item4&price=400 : 新增一条 item 信息
  • PUT localhost:3000/items/4?name=newitem4&price=500 : 更新 ID 为 4 的 item 的信息
  • DELETE localhost:3000/items/4 : 删除 ID 为 4 的 item

我们可以查看每一个 API 的返回结果,以确保其已经被正确地实现。

5. 结论

通过本文的学习,您应该已经了解了如何使用 Express.js 来构建 RESTful API,并且熟悉了 RESTful API 的设计和实现的步骤。当您使用 Express.js 构建 Web 应用程序和构建 RESTful API 的时候,Express.js 是一个非常棒的选择,凭借其灵活性、易用性和性能优良,让 Web 应用程序开发变得简单快捷。

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


猜你喜欢

  • GraphQL 与 RESTful API 的比较:优缺点

    简介 RESTful API 和 GraphQL 都是前端开发中常用的 API 架构,它们都可以通过 HTTP 协议来传递数据,但是它们有着不同的设计思想和实现方式。

    16 天前
  • Fastify 框架下如何实现 WebSocket 通信

    WebSocket 已成为现代 Web 应用程序中实时通信的主要方式。它提供了一种在客户端和服务器之间进行双向通信的机制,而无需使用轮询或长轮询技术。Fastify 是一个快速且低开销的 Node.j...

    16 天前
  • 减少 Lambda 执行时间的方法

    AWS Lambda 是一款非常受欢迎的 Serverless 服务,但是在使用 Lambda 时,我们经常会发现其执行时间相对较长,这不仅会影响程序的性能,还会增加其他相关的费用。

    16 天前
  • 无障碍技术 | 使用无障碍技术打造更好的用户体验

    无障碍技术是指使得应用程序在任何情况下都可用,尤其是在对残疾人、老年人、颜色盲、低视力和聋哑人士等人士进行无障碍设计时,更为重要。这是一种为所有人提供可用性的设计方法,以提高访问良好性,并通过前端技术...

    16 天前
  • MongoDB 与 Hadoop 处理大数据实践

    随着互联网和物联网的普及,数据量不断增长,传统的数据存储和处理方式已经无法胜任处理大量数据的任务。此时,大数据处理技术应运而生。MongoDB 和 Hadoop 是两个常用的大数据处理工具,今天我们来...

    16 天前
  • Babel 6 已经发布,这些新功能你应该学习

    Babel 是一个用于将 ES6+ 代码转换为向后兼容的 JavaScript 代码的工具。它是前端开发中的重要工具之一,而最近发布的 Babel 6 带来了很多有趣的新功能。

    16 天前
  • TypeScript 中的接口和抽象类

    在 TypeScript 中,接口和抽象类都是非常常用的定义类型、组织代码的工具。这个文章将详细介绍它们的区别和应用场景。 TypeScript 接口 接口(Interface)是 TypeScrip...

    16 天前
  • 如何用 Chai 进行数据验证和断言?

    在前端开发中,我们常常需要对数据进行验证和断言,以保证代码的正确性和稳定性。Chai 是一个流行的 JavaScript 断言库,它可以帮助我们轻松地进行数据验证和断言。

    16 天前
  • 如何在 Jest 中模拟 Redux store

    Redux 是一种流行的状态管理库,它被广泛应用于前端开发中。当我们使用 Redux 时,我们通常需要编写一些单元测试来确保我们的应用程序的正确性。然而,当我们在 Jest 中编写测试时,我们可能需要...

    16 天前
  • 使用 Server-Sent Events 实现实时数据推送

    引言 在现代 Web 应用程序开发中,实时数据推送变得越来越重要。在过去,开发人员不得不通过 AJAX 长轮询或 WebSockets 来实现实时通信。不过, 这些方法对于实现简单的实时通信来说过于繁...

    16 天前
  • 学习 RxJS 的 10 个习惯,快速提高编程效率

    RxJS 是一款强大且逐渐流行的 JavaScript 库,它是 Reactive Extensions 的 JavaScript 实现,可以提供流式数据操作。学习 RxJS 可以帮助前端开发者更加高...

    16 天前
  • 如何在 Web Components 中使用路由

    Web 组件(Web Components)是用于创建可重用组件的浏览器 API,可帮助以可组合和可重用的方式构建现代 Web 应用程序,其中包含自定义元素、影子 DOM 和 HTML 模板。

    16 天前
  • 使用 Tailwind CSS 将 Bootstrap 退役的四个原因

    前言 在前端开发领域中,使用框架是提高开发效率的常用手段。Bootstrap 作为前端开发的经典框架,在过去的几年中被广泛使用。然而,近期出现了一个新的框架——Tailwind CSS,许多开发者甚至...

    16 天前
  • 使用 Hapi.js 需要注意的 HTTPS 协议问题

    Hapi.js 是一个轻量级的 Node.js 框架,可用于构建快速、可扩展的 Web 应用程序。通常,Web 应用程序需要保护其中的敏感信息,如登录凭据、支付信息等。

    16 天前
  • MongoDB 与 Redis 结合使用指南

    在开发 web 应用程序时,处理数据是一个非常重要的任务。数据库是存储和管理数据的重要组件之一。现在的 web 应用程序越来越复杂,需要更快的数据检索、处理和分析能力。

    16 天前
  • 如何在 ES8 中使用展开操作符组合对象

    在前端开发中,我们经常需要组合两个或多个对象。在 ES8 中,我们可以使用展开操作符来快速而方便地完成这个任务。本文将详细介绍如何使用展开操作符来组合对象,在深度和学习方面提供指导意义,并包含相应示例...

    17 天前
  • Mongoose 之 Error: pool destroyed 解决方法

    Mongoose 是一个 Node.js 上面的 MongoDB 对象模型工具,它可以让我们使用 JavaScript 的方式来操作 MongoDB 数据库,而 Mongoose 也是目前为止最流行的...

    17 天前
  • 如何处理 GraphQL 中的 SQL 注入

    GraphQL 是一个强大的查询语言,它允许前端开发者轻松地从后端 API 中提取需要的数据。然而,GraphQL 在数据查询和传输的过程中,也存在一些安全性问题,其中较为严重的就是 SQL 注入。

    17 天前
  • Node.js性能优化的最佳实践

    随着应用程序规模的不断扩大,Node.js 的性能已经成为许多应用程序开发者的主要关注点之一。为了保证应用程序的速度和可靠性,需要实施一些 Node.js 性能优化的最佳实践。

    17 天前
  • 使用 Web Components 时常见的警告和解决方法

    Web Components 是一种用于扩展现有 HTML 元素的技术。它由三个主要技术组成:自定义元素、Shadow DOM 和 HTML 模板。使用它们可以创建自定义的 HTML 元素,使其具备更...

    17 天前

相关推荐

    暂无文章