Express.js Egg框架之请求参数处理
2024-02-03 19:36:23
前言
在Web开发中,经常需要处理来自客户端的请求参数。这些参数可能来自各种来源,如路由、请求体、查询字符串和Cookie。Egg.js框架提供了一套强大的工具,可以帮助开发者轻松地处理这些请求参数。
路由参数
Egg.js框架支持一种特殊的路由写法router.js
。通过这种写法,Egg.js服务器可以拿到写在路由中的参数(不是GET参数)。
例如,以下路由将匹配/user/123/hello
请求,并将123
和hello
分别作为两个路由参数传递给对应的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参数,以及中间件,开发者可以轻松地从各种来源获取请求参数。