AngularJS通过$http和服务器通信详解


Posted in Javascript onSeptember 21, 2016

$http

AngularJS提供了$http服务来同服务端进行通信,$http服务队浏览器的XMLHttpRequest对象进行了封装,让我们可以以ajax的方式来从服务器请求数据。

在AngularJS中与远程HTTP服务器交互时会用一个非常关键的服务-$http。

      1、$http是angular中的一个核心服务,利用浏览器的xmlhttprequest或者via JSONP对象与远程HTTP服务器进行交互。

      2、$http的使用方式和jquery提供的$.ajax操作比较相同,均支持多种method的请求,get、post、put、delete等。

      3、$http的各种方式的请求更趋近于rest风格。

      4、在controller中可通过与$scope同样的方式获取$http对象,e.g. function controller($scope,$http){}

下面进行$http服务的使用说明,调用如下:

$http(config).success(function(data,status,headers,config){}).error(function(data,status,headers,config){});

$http服务是一个接受一个参数的函数,参数的类型是对象,用来配置生成的http的请求,该函数返回一个promise对象

var promise = $http({
 method:'GET',
 url:'/api/user.json'
});

promise.then(function(resp){}, function(resp){})

$http请求的配置对象

$http()接受的配置对象可以包含以下属性:

     method:http请求方式,可以为GET,DELETE,HEAD,JSONP,POST,PUT

     url:字符串,请求的目标

     params:字符串或者对象,会被转换成为查询字符串追加的url后面

     data:在发送post请求时使用,作为消息体发送到服务器

     headers:一个列表,每个元素都是一个函数,返回http头

     xsrfHeaderName(字符串):保存XSFR令牌的http头的名称

     xsrfCookieName:保存XSFR令牌的cookie名称

     transformRequest:函数或者函数数组,用来对http请求的请求体和头信息进行转换,并返回转换后的结果。

     transformResponse:函数或者函数数组,用来对http响应的响应体和头信息进行转换,并返回转换后的结果。

     cache:布尔类型或者缓存对象,设置之后angular会缓存get请求。

     timeout:数值,延迟请求

     responseType:字符串,响应类型。可以为arraybuffer, blob,document,json, text, moz-blob, moz-chunked-text, moz-chunked-

     arraybuffer

$http请求的响应对象

     angular传递给then方法的响应对象包括以下几个属性

     data:转换之后的响应体

     status:http响应状态码

     headers:头信息

     config:生成原始请求的设置对象

     statusText:http响应状态的文本

拦截器

angular中通过拦截器我们可以从全局层面对请求以及响应进行拦截。

使用拦截器之前,我们通过factory()声明一个服务,然后通过$httpProvider注册拦截器。拦截器分为四种,两种成功拦截器,两种失败拦截器。

angular.module('test', []).factory('testInterceptor', function($q){
 var interceptor = {
 'request':function(config){
 return config;
 },
 'response':function(resp){
 return response;
 },
 'requestError':function(rejection){
 return $q.reject(rejection);
 },
 'responseError':function(rejection){
 return rejection
 }
 }
 return interceptor;
})

angular.module('test', []).config(function($httpProvider){
 $httpProvider.interceptors.push('testInterceptor');
})

总结

以上就是这篇文章的全部内容,希望能对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
用JavaScript修改CSS属性的代码
May 06 Javascript
JavaScript解析URL参数示例代码
Aug 12 Javascript
学习jQuey中的return false
Dec 18 Javascript
Node.js 实现简单小说爬虫实例
Nov 18 Javascript
es7学习教程之fetch解决异步嵌套问题的方法示例
Jul 21 Javascript
JS实现的按钮点击颜色切换功能示例
Oct 19 Javascript
在vue中通过axios异步使用echarts的方法
Jan 13 Javascript
微信小程序如何获取用户信息
Jan 26 Javascript
关于vue v-for循环解决img标签的src动态绑定问题
Sep 18 Javascript
Vue父子之间值传递的实例教程
Jul 02 Javascript
jQuery实现全选按钮
Jan 01 jQuery
JavaScript 事件捕获冒泡与捕获详情
Nov 11 Javascript
JavaScript 拖拽实例代码
Sep 21 #Javascript
Angularjs中controller的三种写法分享
Sep 21 #Javascript
jQuery中Find选择器用法示例
Sep 21 #Javascript
jQuery实现点击后高亮背景固定显示的菜单效果【附demo源码下载】
Sep 21 #Javascript
Angular2 (RC5) 路由与导航详解
Sep 21 #Javascript
Angular2 (RC4) 路由与导航详解
Sep 21 #Javascript
AngularJS 单元测试(二)详解
Sep 21 #Javascript
You might like
php中使用preg_match_all匹配文章中的图片
2013/02/06 PHP
ThinkPHP3.2.2的插件控制器功能简述
2014/07/09 PHP
DEFER怎么用?
2006/07/01 Javascript
基于jQuery UI CSS Framework开发Widget的经验
2010/08/21 Javascript
更换select下拉菜单背景样式的实现代码
2011/12/20 Javascript
JavaScript实现自己的DOM选择器原理及代码
2013/03/04 Javascript
javascript使用定时函数实现跳转到某个页面
2013/12/25 Javascript
JavaScript四种调用模式和this示例介绍
2014/01/02 Javascript
jQuery动态背景图片效果实现方法
2015/07/03 Javascript
JS 实现倒计时数字时钟效果【附实例代码】
2016/03/30 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
2016/09/06 Javascript
js获取当前时间(昨天、今天、明天)
2016/11/23 Javascript
angular+bootstrap的双向数据绑定实例
2017/03/03 Javascript
Kotlin学习第一步 kotlin语法特性
2017/05/25 Javascript
PHP 实现一种多文件上传的方法
2017/09/20 Javascript
js获取文件里面的所有文件名(实例)
2017/10/17 Javascript
Vue框架之goods组件开发详解
2018/01/25 Javascript
浅谈js闭包理解
2019/03/28 Javascript
微信公众号H5之微信分享常见错误和问题(小结)
2019/11/14 Javascript
微信小程序swiper使用网络图片不显示问题解决
2019/12/13 Javascript
vuex+axios+element-ui实现页面请求loading操作示例
2020/02/02 Javascript
[01:20]DOTA2 2017国际邀请赛冠军之路无止竞
2017/06/19 DOTA
在主机商的共享服务器上部署Django站点的方法
2015/07/22 Python
python递归函数绘制分形树的方法
2018/06/22 Python
Python实现对word文档添加密码去除密码的示例代码
2020/12/29 Python
python实现scrapy爬虫每天定时抓取数据的示例代码
2021/01/27 Python
Matlab使用Plot函数实现数据动态显示方法总结
2021/02/25 Python
将HTML5 Canvas的内容保存为图片借助toDataURL实现
2013/05/20 HTML / CSS
Scholastic父母商店:儿童书籍
2017/01/01 全球购物
大学生两会学习心得体会
2014/03/10 职场文书
工程项目建议书范文
2014/03/12 职场文书
婚礼司仪主持词
2014/03/14 职场文书
合伙经营协议书
2014/04/18 职场文书
消防标语大全
2014/06/07 职场文书
工程安全生产协议书
2014/11/21 职场文书
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
2022/06/01 Servers