nodejs开发——express路由与中间件

下面是关于 "Node.js 开发——Express 路由与中间件" 的完整攻略。

什么是 Express?

Express 是一个基于 Node.js 平台的 Web 应用开发框架,提供了一系列强大的特性,如路由控制、中间件、模板引擎等,可以让开发者高效地构建功能丰富、易于扩展的 Web 应用。

路由

在 Express 中,路由是指根据 HTTP 请求的路径和 HTTP 请求的方法来选择对应的处理函数的过程。

基本使用

在 Express 中,通过创建一个 Router 对象来实现路由的控制。下面是一个简单的示例:

const express = require('express');
const router = express.Router();

router.get('/', (req, res) => {
  res.send('Hello, world!');
});

module.exports = router;

在上面的代码中,首先通过 require 引入了 express 模块,并使用 express.Router() 创建了一个路由对象。接着,使用 router.get() 方法来定义一个 GET 请求的路由,当用户访问网站的根路径时,会返回字符串 'Hello, world!'

最后,通过 module.exports 导出该路由对象,以便在主模块或其他路由中使用。

动态路由

在 Express 中,可以通过 : 语法来实现动态路由。例如,定义一个参数名为 id 的动态路由:

router.get('/users/:id', (req, res) => {
  res.send('User ID: ' + req.params.id);
});

在上述示例代码中,当用户访问 /users/123 路径时,会返回字符串 'User ID: 123'

路由分组

在实际开发中,我们通常会将路由按照功能分组,以便更好地管理和维护代码。在 Express 中,可以通过创建多个路由对象来实现路由分组。

例如,创建一个名为 users 的路由分组,并在其中定义若干个与用户相关的路由:

const userRouter = express.Router();

userRouter.get('/', (req, res) => {
  res.send('User list');
});

userRouter.get('/:id', (req, res) => {
  res.send('User ID: ' + req.params.id);
});

userRouter.post('/', (req, res) => {
  res.send('Create user');
});

module.exports = userRouter;

在上述示例代码中,首先通过 express.Router() 创建了一个路由对象 userRouter,然后在其中定义了三个路由,分别为获取用户列表、获取指定用户信息和创建新用户。

最后,通过 module.exports 导出该路由对象,以便在主应用程序或其他路由中使用。

示例

下面是使用路由实现一个简单的用户管理功能的基本示例:

// app.js

const express = require('express');
const app = express();
const port = 3000;
const userRouter = require('./userRouter');

app.use(express.json());
app.use('/users', userRouter);

app.listen(port, () => {
  console.log(`App listening at http://localhost:${port}`);
});
// userRouter.js

const express = require('express');
const router = express.Router();

router.get('/', (req, res) => {
  res.send('User list');
});

router.get('/:id', (req, res) => {
  res.send('User ID: ' + req.params.id);
});

router.post('/', (req, res) => {
  const user = req.body;
  // TODO: 保存用户信息
  res.send('Create user: ' + user.name);
});

module.exports = router;

在上述示例代码中,首先在 app.js 中引入了 express 模块,创建了一个 Express 应用程序,然后在应用程序中使用了两个中间件:express.json()userRouter

其中,express.json() 是一个内置的中间件,用于解析 HTTP 请求的 body 数据,将其转换成 JavaScript 对象,并挂载到 req.body 上。

userRouter 是一个自定义的路由对象,在 router.js 文件中定义了获取用户列表、获取指定用户信息和创建新用户三个路由。当用户请求 /users 路径时,会返回 'User list' 字符串;请求 /users/123 路径时,会返回 'User ID: 123' 字符串;请求 POST 方法提交用户信息时,会将用户信息保存到数据库,并返回 'Create user: ${user.name}' 字符串。

中间件

在 Express 中,中间件是指在处理 HTTP 请求的过程中,可以添加一些额外的处理逻辑的函数。

基本使用

在 Express 中,可以使用 app.use() 方法来添加中间件。例如:

app.use(dateMiddleware);

function dateMiddleware(req, res, next) {
  req.date = new Date();
  console.log('Date:', req.date);
  next();  // 调用下一个中间件或路由处理函数
}

在上述示例代码中,定义了一个 dateMiddleware 中间件函数,用于在处理 HTTP 请求时记录当前时间并输出。当客户端发送 HTTP 请求时,该函数会被调用,并将当前时间保存到 req.date 属性上,并输出当前时间的值。最后,调用 next() 函数来执行下一个中间件或路由。

错误处理中间件

在 Express 中,可以通过捕获错误来进行错误处理。例如:

app.use((err, req, res, next) => {
  console.log(err);
  res.status(500).send('Something broke!');
});

在上述示例代码中,定义了一个错误处理中间件,当 HTTP 请求处理过程中发生错误时,该函数会被调用,其中 err 参数表示错误对象。该函数会输出错误对象的信息,并向客户端返回 500 状态码和一个简单的错误提示信息。

示例

下面是使用中间件实现一个简单的日志记录功能的基本示例:

// app.js

const express = require('express');
const app = express();
const port = 3000;
const loggerMiddleware = require('./loggerMiddleware');

app.use(loggerMiddleware);

app.get('/', (req, res) => {
  res.send('Hello, world!');
});

app.listen(port, () => {
  console.log(`App listening at http://localhost:${port}`);
});
// loggerMiddleware.js

function loggerMiddleware(req, res, next) {
  console.log(`[${new Date()}] ${req.method} ${req.url}`);
  next();
}

module.exports = loggerMiddleware;

在上述示例代码中,首先在 app.js 中引入了 express 模块,创建了一个 Express 应用程序,并使用 loggerMiddleware 中间件来记录 HTTP 请求的日志。其中,loggerMiddleware 在接收到 HTTP 请求时会输出请求的方法、路径和时间。最后,定义了一个根路由,返回字符串 'Hello, world!'

总结

通过这篇攻略,我们了解到了如何在 Express 中实现路由和中间件,以及如何结合现有的中间件和路由来开发功能丰富、易于维护的 Web 应用程序。

无论是开发基于 Node.js 的 Web 应用程序,还是学习 Express 框架,掌握路由和中间件的使用都是必不可少的一部分。希望本文能够对大家有所帮助,谢谢!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nodejs开发——express路由与中间件 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • node.js学习之事件模块Events的使用示例

    Node.js学习之事件模块Events的使用示例 Node.js中的事件驱动模型基本上是所有I/O操作的基础。EventEmitter是Node.js的核心模块之一,它提供了事件处理的接口,可以用于自定义事件,或者处理Node.js内部提供的事件。 事件模块Events的基础使用 继承EventEmitter 我们可以用ES6的方式继承Node.js提供的…

    node js 2023年6月8日
    00
  • 使用npm发布Node.JS程序包教程

    使用 npm 发布 Node.js 程序包的教程大致可以分为以下几步: 1. 注册npm账号 首先,你需要在 npm 的官方网站上注册一个账户,网址是:https://www.npmjs.com/signup。注册成功后,你需要在命令行中使用 npm login 命令登陆该账户。如果你已经有了账户,在命令行中输入 npm whoami 命令验证登录状态。 2…

    node js 2023年6月8日
    00
  • 微信小程序云开发实现云数据库读写权限

    微信小程序云开发实现云数据库读写权限攻略 概述 云开发是微信小程序提供的一项云服务,通过云开发可以快速开发并上线小程序,其中云数据库是云开发中的重要组件之一。本文将详细介绍云开发中如何实现云数据库的读写权限。 获取云环境 在实现云数据库读写权限之前,需要先获取云环境,以下是操作步骤: 登录微信公众平台注册账号并登录,创建一个小程序; 进入云开发后台,点击开通…

    node js 2023年6月8日
    00
  • 关于NodeJS中的循环引用详解

    关于 NodeJS 中的循环引用详解: 什么是循环引用? 循环引用即指两个或多个模块之间相互依赖,导致出现互相引用的情况。例如,模块 A 引用了模块 B 中的对象,同时模块 B 中的对象又引用了模块 A 中的对象,就会导致循环引用。 例如: 模块A: const B = require(‘./B’); const name = ‘Tom’; module.e…

    node js 2023年6月8日
    00
  • 用nodejs写的一个简单项目打包工具

    下面是详细的讲解“用nodejs写的一个简单项目打包工具”的完整攻略: 1. 需求分析 在开始编写项目打包工具之前,需要对需求做出明确的分析和规划。主要包括以下几个方面: 支持哪些类型的文件打包,如HTML、CSS、JavaScript等 支持哪些打包方式,如合并、压缩等 如何读取文件,如何输出打包结果 支持哪些配置项,如输入文件路径、输出目录、打包规则等 …

    node js 2023年6月8日
    00
  • express默认日志组件morgan的方法

    当使用Express框架开发Web应用时,通常需要记录一些请求和响应的日志信息,以便于后续的调试、问题排查等工作。Express提供了默认的日志组件morgan,使用该组件可以实现快速的日志记录。 安装morgan 在使用morgan前,需要先在项目中安装该模块。 npm install morgan –save 使用morgan 安装完成morgan后,…

    node js 2023年6月8日
    00
  • 浅谈JavaScript工具链不完全指南

    首先,我们需要明确一下什么是JavaScript工具链。JavaScript工具链是指开发者使用的工具集合,主要用于提高开发效率和代码质量。常见的JavaScript工具链包括构建工具、测试工具、代码质量检测工具和打包工具等。 本文旨在浅谈JavaScript工具链的不完全指南,介绍一些常用的JavaScript开发工具以及用法。 一、构建工具 构建工具主要…

    node js 2023年6月8日
    00
  • ajax +NodeJS 实现图片上传实例

    下面是“ajax +NodeJS 实现图片上传实例”的完整攻略。 前提条件 前端使用jQuery库 后端使用NodeJS和express框架 需要安装multer中间件处理文件上传 实现过程 1. 前端页面 在前端页面中,需要准备一个表单,其中包含一个input[type=file]元素,用于选择要上传的图片。此外,还需要添加一个button,用于提交表单数…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部