返回

Express.js Egg框架之请求参数处理

前端

前言

在Web开发中,经常需要处理来自客户端的请求参数。这些参数可能来自各种来源,如路由、请求体、查询字符串和Cookie。Egg.js框架提供了一套强大的工具,可以帮助开发者轻松地处理这些请求参数。

路由参数

Egg.js框架支持一种特殊的路由写法router.js。通过这种写法,Egg.js服务器可以拿到写在路由中的参数(不是GET参数)。

例如,以下路由将匹配/user/123/hello请求,并将123hello分别作为两个路由参数传递给对应的Controller函数:

router.get('/user/:id/:msg', controller.user.info);

在对应的Controller函数中,可以使用ctx.params对象来获取路由参数:

exports.info = async (ctx) => {
  const id = ctx.params.id;
  const msg = ctx.params.msg;

  // ...
};

请求体参数

请求体参数是指通过HTTP请求的主体部分传递的参数。这些参数通常是JSON格式的字符串,但也可以是其他格式,如XML或二进制数据。

要在Egg.js框架中获取请求体参数,可以使用ctx.request.body对象:

exports.info = async (ctx) => {
  const body = ctx.request.body;

  // ...
};

如果请求体参数不是JSON格式,可以使用ctx.request.rawBody对象来获取原始的请求体数据。

查询字符串参数

查询字符串参数是指通过URL中的查询字符串传递的参数。这些参数通常以?开头,并以&符号分隔。

要在Egg.js框架中获取查询字符串参数,可以使用ctx.query对象:

exports.info = async (ctx) => {
  const query = ctx.query;

  // ...
};

Cookie参数

Cookie参数是指通过HTTP请求头中的Cookie字段传递的参数。这些参数通常用于跟踪用户状态或保存用户偏好。

要在Egg.js框架中获取Cookie参数,可以使用ctx.cookies对象:

exports.info = async (ctx) => {
  const cookies = ctx.cookies;

  // ...
};

中间件

中间件是一种特殊的Express.js中间件,可以用来处理请求参数。中间件可以放在路由之前或之后,以便在请求处理之前或之后对请求参数进行处理。

要在Egg.js框架中使用中间件,可以编写一个中间件函数,并将其注册到Egg.js应用中:

// middleware/auth.js
module.exports = (options, app) => {
  return async (ctx, next) => {
    // ...

    await next();
  };
};

然后,可以在config/config.default.js文件中注册中间件:

// config/config.default.js
module.exports = {
  // ...
  middleware: [
    'auth',
  ],
};

这样,中间件就会在每个请求处理之前执行。

结语

Egg.js框架提供了一套强大的工具,可以帮助开发者轻松地处理请求参数。通过使用路由参数、请求体参数、查询字符串参数和Cookie参数,以及中间件,开发者可以轻松地从各种来源获取请求参数。