用户登录

现在使用 GET 方法,请求 posts 地址,会响应回来一个数组,现在我想转换一下这个响应的数据格式,比如把响应的数据放在 data 属性里面,这个动作可以通过拦截器完成。

先在终端去创建一个拦截器。nest generate 生成一个 interceptor 名字是 transform ,放在 core/interceptors 里面。

回到项目,打开刚才创建的这个拦截器。

可以先在这个文件里 export 一个 interface,名字是 Response,类型是 T,泛化类型,里面有个 data 属性,类型也是 T,这个拦截器类的类型是 T。

再设置一下 NestInterceptor 的类型, 处理的数据类型是 T,返回的类型现在可以是 Response,T。intercept 方法返回的值是 Observable,类型是 Response,T。

方法里要执行 next.handle,给它接上一个管道,这次用一个 map 操作员方法,给它一个回调,接收的参数可以叫 data,它的值就是处理器方法返回的值,这个回调返回的值就是把处理器方法返回的值放在 data 这个属性里面。

打开 posts.controller,找到这个控制器的 index 方法,在这个方法的上面使用 UseInterceptor,给它绑定一个拦截器,名字是 TransformInterceptor。

再到客户端这里试一下, 用 GET 方法请求 posts 这个地址,这次得到的响应的数据会放在一个 data 属性里面,这是因为在这个请求的处理器方法上面,绑定了一个 TransformInterceptor 拦截器,它做的事情就是会把响应的数据放在 data 属性里。

用 POST 请求 posts 创建一个数据,重新再用 GET 请求 posts,返回的这组数据会放在 data 属性里面。

拦截器:转换响应数据《 Nest.js 应用框架:核心部件(3) 》

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点