使用express 和js开发一个博客系统(三)

文章介绍了如何在Express框架中使用路由中间件,包括创建自定义中间件、处理不同类型的请求(如GET、POST)以及获取请求参数(query、路由参数和请求体参数)。通过示例展示了如何将中间件应用到特定路径,以及如何在路由文件中处理用户相关的请求。
摘要由CSDN通过智能技术生成

在这里插入图片描述

路由中间件(专门处理路由的中间件)

在使用 Express 框架开发后端应用时,路由中间件是一个非常重要的组件。它能够帮助我们处理不同的请求,并将其路由到相应的处理程序上。

自定义路由中间件

首先,我们可以创建自定义的路由中间件来处理请求。中间件函数通常具有三个参数:req、res 和 next。req 表示请求对象,res 表示响应对象,next 是一个回调函数,通过调用它来将控制权传递给下一个中间件或路由处理程序。

// 自定义中间件函数
function customMiddleware(req, res, next) {
  console.log('这是自定义中间件');
  console.log('请求路径:', req.url);
  // 执行下一个中间件或路由处理程序
  next();
}

module.exports = customMiddleware;

在加载模块时,可以将该自定义中间件导入:

const customMiddleware = require('./customMiddleware');

然后,可以通过以下方式将中间件挂载到 Express 应用上:

  • 如果不指定路径参数,该中间件将应用于所有路由和请求:
app.use(customMiddleware);
  • 如果指定路径参数,只有匹配该路径的请求才会经过该中间件:
app.use("/path", customMiddleware);

使用路由中间件

路由中间件可以帮助我们将不同类型的请求分发到对应的处理程序上,实现更细粒度的路由功能。

首先,创建一个 routes/users.js 文件来处理用户相关的请求:

// routes/users.js

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

// 处理 GET 请求 /users
router.get('/', function(req, res, next) {
  res.send('用户列表');
});

// 处理 GET 请求 /users/login
router.get('/login', function(req, res, next) {
  res.send('用户登录');
});

// 处理 POST 请求 /users/register
router.post('/register', function(req, res, next) {
  res.send('用户注册');
});

module.exports = router;

然后,在应用中引入该路由文件:

const usersRouter = require('./routes/users');

最后,使用该路由中间件:

app.use('/users', usersRouter);

这样,当应用接收到以 “/users” 开头的请求时,就会将其交由 usersRouter 处理。

处理不同类型的请求

路由中间件可以处理不同类型的请求,比如 GET、POST 等。

处理 GET 请求:

router.get(监听请求的路径, 处理回调函数);

处理 POST 请求:

router.post(监听请求的路径, 处理回调函数);

在处理回调函数中,可以编写逻辑来处理请求,并发送相应的响应。

获取请求参数

在路由中间件中,可以获取请求参数。Express 提供了多种方式来获取请求参数,包括 query 参数、路由参数和请求体参数。

获取 GET 请求的 query 参数:

// 监听 GET 请求 /users/login
router.get('/login', function(req, res, next) {
  console.log(req.query); // 获取 GET 请求的 query 参数
  res.json({ code: 1 });
});

获取 GET 请求的路由参数:

// 监听 GET 请求 /users/test/:id
router.get('/test/:id', function(req, res, next) {
  console.log(req.params); // 获取 GET 请求的路由参数
  res.json({ code: 1 });
});

获取 POST 请求的参数(url-encoded 和 JSON):

首先,在 app.js 中添加解析请求体中间件:

app.use(express.urlencoded()); // 用来解析 x-www-form-urlencoded 类型请求体
app.use(express.json()); // 用来解析 JSON 类型请求体

然后,在路由中间件中获取参数:

// 监听 POST 请求 /users/register
router.post('/register', function(req, res, next) {
  console.log(req.body); // 获取 POST 请求的参数
  res.json({ code: 1 });
});

通过以上方式,我们可以方便地在 Express 应用中使用路由中间件来处理不同类型的请求,并获取请求参数。这样能够使代码更加模块化和易于维护。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值