如何解决处理AdonisJs中间件中的响应
我正在尝试将所有入站请求记录到我的数据库中。为此,我创建了一个中间件,在该中间件中触发数据事件,然后使用侦听器处理数据并将其保存在数据库中。
我能够记录所有请求信息,但无法记录响应信息。
这是我的中间件:
'use strict'
/** @typedef {import('@adonisjs/framework/src/Request')} Request */
/** @typedef {import('@adonisjs/framework/src/Response')} Response */
/** @typedef {import('@adonisjs/framework/src/View')} View */
const Event = use('Event')
class InboundRequestLogger {
/**
* @param {object} ctx
* @param {Request} ctx.request
* @param {Response} ctx.response
* @param {Function} next
*/
async handle({request,response},next) {
Event.fire('new::inboundRequest',{
'method': request.method(),'url': request.originalUrl(),'ip': request.ip(),'headers': request.headers(),'body': request.all(),'is_ajax': request.ajax()
})
// call next to advance the request
await next()
}
}
module.exports = InboundRequestLogger
问题是我不知道如何触发next()
,然后检查响应(例如状态码)。
我试图这样做:
class MyMiddleware {
async handle (ctx,next) {
await next()
ctx.response.response.on('finish',() => {
console.log(ctx.response.response.statusCode)
})
}
}
但是await next()
如何在此中间件中获取响应信息?
Adonis版本:4.1
解决方法
结束事件处理程序应该放在调用下一个
之前 ctx.response.response.on('finish',() => {
console.log(ctx.response.response.statusCode)
})
await next()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。