我曾在NestJS中使用过一个拦截器,在那里我可以将数据添加到响应标头中,但我看到的所有示例以及我使用的都是插入静态数据。
为了处理一些动态数据,我使用了一个硬编码的调用来获取数据,比如我的服务名称和版本,但我希望能够传递数据添加到响应中。
例如,在对服务进行调用时,可能需要向响应添加HTTP标头,而对后端服务器的服务调用会获取这些数据。理想情况下,我希望能够将这些数据传递到拦截器中,因为我希望继续进行标准的响应处理。
我当前的拦截器去类中读取package.json中的数据。
@Injectable()
export class AddServiceVersionInterceptor implements NestInterceptor {
intercept(context: ExecutionContext, next: CallHandler): Observable<unknown> {
const AppInfo:AppService = new AppService();
const ServiceInfo:string = `${AppInfo.GetName()}/${AppInfo.GetVersion()}`;
const ResponseObj:ExpressResponse = context.switchToHttp().getResponse();
ResponseObj.setHeader('my-service', ServiceInfo );
return next.handle().pipe();
}
}
我希望能够依赖性地注入额外的信息,比如需要添加到响应中的头的列表。我不知道如何将数据传递给NestJS中的inceptor。
作为一个全局拦截器,我希望能够提供数据,而不是让拦截器调用对后端进行调用的服务,这将是对后端的第二次调用。
我认为constructor()可能是实现这一点的方法,但由于它是由NestJS填充和创建的,我不确定这是否可行,因为每个路由的数据不同,并且是从后端服务调用返回的。