博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
angular 拦截器
阅读量:5739 次
发布时间:2019-06-18

本文共 843 字,大约阅读时间需要 2 分钟。

需求描述

前台需要请求后台的API,然后在请求时API的样式均有如下格式:

/api/...

所以依照不写重复代码的原则,一种方法我们可以定义一个公共变量,另一种就是可以定义一个拦截器,然后在请求API之前,为路径添加公共部分,再去请求。

angular中的拦截器

angular中要定义拦截器,需要实现HttpInterceptor接口,然后实现intercept()方法。

@Injectable()export class MyInterceptor implements HttpInterceptor {    intercept(req: HttpRequest
, next: HttpHandler) { return next.handle(req); }}

该方法接受了两个参数。第一个我们通过名字一下子就看出来这个是什么意思:这是一个http请求,他是我们主要操作的对象。另一个参数是next,他表示拦截器链表中的下一个拦截器。也就是说他会将http请求传递给下一个拦截器。这个链表的最后一项就是后端处理器,所以最后用过next将请求传给后台处理。

然后我们的需求是在请求之前修改请求路径,所以需要这么写:

intercept(req: HttpRequest
, next: HttpHandler) { const cloneRequest = req.clone({ url: `api/${req.url}` // 添加默认api访问路径 }); return next.handle(cloneRequest);}

在angular中,如果想要修改请求,就需要调用它的clone方法,然后修改这个克隆体,最后将克隆体通过next对象,传递给下一个对象,或传给后台。

这里我只对url进行了修改,当然还可以处理请求中的其他方面。


官方参考:

转载地址:http://fxfzx.baihongyu.com/

你可能感兴趣的文章
思科和华为路由器OSPF之对比学习
查看>>
python运维开发之socket网络编程04
查看>>
6426C Lab2 部署和配置证书服务
查看>>
以"小刀会“的成败论当今创业成败
查看>>
SCOM 2012系列③导入管理包
查看>>
读《做单--成交的秘密》有感
查看>>
shell脚本如何监控程序占用带宽?
查看>>
如何定位cpu占用率高的java线程?
查看>>
GRE over IPSEC 同时NAT-T(Profile PAT)
查看>>
Excel 2016中的新增函数之SWITCH
查看>>
Python的几种实现
查看>>
C#反射的Assembly的简单应用
查看>>
《鸟哥的Linux私房菜》7章 Linux文件与目录管理 习题答案
查看>>
请投资自己,不会花钱的人没前途
查看>>
C#基础知识整理:基础知识(4) 继承
查看>>
perl注释多行
查看>>
Service Manager R2管理服务器安装
查看>>
一道面试问题学生们的多种解答汇总
查看>>
Windows Server 2012正式版RDS系列④
查看>>
企业长寿的乔氏秘诀
查看>>