【发布时间】:2021-08-08 15:54:00
【问题描述】:
我正在尝试构建一个装饰器来“记录”请求信息
export const Tracking = () => {
return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {
const method = descriptor.value;
descriptor.value = async function(...args: any[]) {
console.log(/** Request info */)
console.log(/** Headers, Body, Method, URL...*/)
return method.call(this, ...args);
}
}
}
并尝试在这样的控制器方法上使用它。
export class Controller {
@Get('/path')
@Tracking()
public async getData(@Headers('user') user: User) {
return this.service.getData(user.id);
}
}
如果这是不可能的,有没有办法将拦截器应用于控制器的某些方法?
或者是否有线程(类似)级别的请求上下文?
谢谢!!
【问题讨论】:
-
you can bind interceptors to some method。不确定第二点,但你读过injection scopes吗?
-
我认为你需要的是一个中间件 - docs.nestjs.com/middleware
-
@MicaelLevi 谢谢,我在阅读文档时错过了重要的一行...我认为他们应该在示例部分列出我最关注的所有用法...跨度>
标签: node.js typescript nestjs