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 相关文章推荐
基于jquery的给文章加入关键字链接
Oct 26 Javascript
可在线编辑网页文字效果代码(单击)
Mar 02 Javascript
关于jQuery判断元素是否存在的问题示例探讨
Jul 21 Javascript
jQuery实现拖拽效果插件的方法
Mar 23 Javascript
Javascript随机标签云代码实例
Jun 21 Javascript
Bootstrap CSS组件之导航条(navbar)
Dec 17 Javascript
详谈jQuery Ajax(load,post,get,ajax)的用法
Mar 02 Javascript
vuejs+element-ui+laravel5.4上传文件的示例代码
Aug 12 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
Sep 17 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
Nov 01 Javascript
javascript实现前端成语点击验证优化
Jun 24 Javascript
JQuery Ajax如何实现注册检测用户名
Sep 25 jQuery
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
WebQQ最新登陆协议的用法
2014/12/22 PHP
php实现博客,论坛图片防盗链的方法
2016/10/15 PHP
总结PHP内存释放以及垃圾回收
2018/03/29 PHP
PHP通过文件保存和更新信息的方法分析
2019/09/12 PHP
一个报数游戏js版(约瑟夫环问题)
2010/08/05 Javascript
JS字符串截取函数实例
2013/12/27 Javascript
《JavaScript函数式编程》读后感
2015/08/07 Javascript
jQuery实现鼠标经过事件的延时处理效果
2020/08/20 Javascript
jQuery如何使用自动触发事件trigger
2015/11/29 Javascript
JavaScript的removeChild()函数用法详解
2015/12/27 Javascript
Angular使用ng-messages与PHP进行表单数据验证
2016/12/28 Javascript
JavaScript数据结构与算法之二叉树遍历算法详解【先序、中序、后序】
2019/02/21 Javascript
node删除、复制文件或文件夹示例代码
2019/08/13 Javascript
JavaScript实时更新当前的时间的示例代码
2020/07/15 Javascript
[51:52]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
python批量修改文件后缀示例代码分享
2013/12/24 Python
Python数据分析之获取双色球历史信息的方法示例
2018/02/03 Python
对Python 网络设备巡检脚本的实例讲解
2018/04/22 Python
Python面向对象程序设计之私有属性及私有方法示例
2019/04/08 Python
Python 列表推导式需要注意的地方
2020/10/23 Python
详解Django中异步任务之django-celery
2020/11/05 Python
python 实现图片批量压缩的示例
2020/12/18 Python
python调用百度AI接口实现人流量统计
2021/02/03 Python
80年代复古T恤:TruffleShuffle
2018/07/02 全球购物
入党申请人的自我鉴定
2013/12/01 职场文书
汽车促销活动方案
2014/03/31 职场文书
应届生求职信
2014/05/31 职场文书
党支部创先争优承诺书
2014/08/30 职场文书
教师节学生演讲稿
2014/09/03 职场文书
五年级学生期末评语
2014/12/26 职场文书
教师廉洁自律个人总结
2015/02/10 职场文书
中学团支部工作总结
2015/08/13 职场文书
2015新员工工作总结范文
2015/10/15 职场文书
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
2021/04/17 Vue.js
vue使用localStorage持久性存储实现评论列表
2022/04/14 Vue.js
原生JS实现分页
2022/04/19 Javascript