AngularJS的HTTP请求和响应的详细解释和拦截系统统一处理
在网络的发展,除了数据的操作,是最常见的引发和处理HTTP请求的HTTP请求是异步的,加上,如果在捕捉各种常见错误的每个请求,处理所有类型的自定义错误,然后会有很多类似的代码,或使用丑陋的电话函数在每个请求一些自定义的处理。这两种方法都基本上没有一个可靠的选择。幸运的是,AngularJS提供拦截导弹的拦截战斗机结合在应用所有XHR请求。主要功能
拦截器有两个处理时间,分别为:
在其他程序代码执行HTTP请求之后,它在请求实际发送到浏览器之前处理该请求。
在对请求作出响应之后,在处理其他程序代码之前对请求的响应进行处理。
因此,不难理解它可以用于以下几个方面:
全球加工误差
统一认证类处理
对发出的所有请求进行预处理
对所有接收到的响应进行预处理
做一些增强用户体验的动作,比如显示一个进度条
基本使用
首先看最基本的用法:
VaR的应用= angular.module('app,{ });
定义服务,等待将把它作为拦截器的函数。
app.factory('httpinterceptor,{ $ Q',HttpInterceptor });
功能httpinterceptor($ Q){
返回{
请求:函数(配置){
返回配置;
},
RequestError:功能(ERR){
返回的q.reject(ERR);
},
响应:函数(RES){
返回水库;
},
频响:功能(ERR){
如果(- 1 =错误状态){
远程服务器没有响应
如果(err.status = = = 500 }){
各种处理/自定义错误
如果(err.status = = = 501 }){
…
}
返回的q.reject(ERR);
}
};
}
相应的拦截器
app.config({ httpprovider美元,功能($ httpprovider){
httpprovider.interceptors.push美元(httpinterceptor);
});
进一步的了解
在实际拦截器处理函数中,返回包含四个成员的对象。这四个成员不是必需的,可以根据实际情况指定一个或两个。
请求:接收一个参数,它是HTTP中的标准配置对象,也需要返回一个标准配置。此时,您可以添加各种身份验证信息,您也可以在这里启动进度条。
RequestError:当有多个拦截器,requesterror将在前面拦截执行错误或执行q.reject美元(),和相应的参数将是错误的。
回应:接受请求的对象参数,不能直接回来,这时可以显示进度条会圆满结束,当然,如果后端API返回一个自定义错误的HTTP代码的状态仍然是200的话,那么处理自定义错误在这里,也可以做一些处理的返回的数据,注意要将进度条设置完成
频响:这是重中之重。也就是说,它可以处理标准的HTTP错误,例如CGI在服务器没有响应时经常出现的502类,或者CGI,如PHP。它还可以处理HTTP状态代码的所有自定义错误,而不是所有的。
前四种方法中,前两种是请求的预处理,后两种是对请求的响应的处理。
以上是本文的全部内容,希望能对您有所帮助,希望大家多多支持。