我正在尝试构建一个装饰器来“记录”请求信息
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
并尝试在这样的控制器方法上使用它。
export class Controller {
@Get('/path')
@Tracking()
public async getData(@Headers('user') user: User) {
return this.service.getData(user.id);
}
}
Run Code Online (Sandbox Code Playgroud)
如果这是不可能的,有没有办法将拦截器应用于控制器的某些方法?
或者是否存在用于请求的线程(类似)级上下文?
谢谢!!