如何在NestJS中让全局与路由拦截器配合添加API版权信息?
问题原因
你的全局拦截器在处理响应时,直接返回了一个新对象{ tt: "All rights reserved" },完全覆盖了路由拦截器处理后的返回结果,所以Swagger只显示版权信息,而丢失了路由拦截器添加的geoCoder等数据。
解决方案
修改全局拦截器的map操作,保留原响应数据的同时添加版权字段:
@Injectable() export class CopyrightsInterceptor implements NestInterceptor { intercept(context: ExecutionContext, next: CallHandler): Observable<any> { return next.handle().pipe( map(value => { // 展开原返回值,再添加版权字段 return { ...value, copyright: "All rights reserved" } }) ); } }
补充说明
修改后,全局拦截器会接收路由拦截器处理后的响应数据,将其展开并追加版权字段,最终返回的结果会包含路由拦截器添加的geoCoder、业务接口返回的数据,以及全局添加的版权信息。
建议把版权字段名改成语义化的copyright,比tt更清晰易懂。
内容的提问来源于stack exchange,提问作者Philippe Corrèges
相关产品推荐
相关产品推荐

