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 打印页面代码
Mar 24 Javascript
jQuery中die()方法用法实例
Jan 19 Javascript
javascript实用方法总结
Feb 06 Javascript
js实现文本框支持加减运算的方法
Aug 19 Javascript
JavaScript进阶练习及简单实例分析
Jun 03 Javascript
jQuery通过改变input的type属性实现密码显示隐藏切换功能
Feb 08 Javascript
Bootstrap超大屏幕的实现代码
Mar 22 Javascript
微信小程序开发之麦克风动画 帧动画 放大 淡出
Apr 18 Javascript
vue-cli 打包使用history模式的后端配置实例
Sep 20 Javascript
基于Angular中ng-controller父子级嵌套的相关属性详解
Oct 08 Javascript
微信小程序使用setData修改数组中单个对象的方法分析
Dec 30 Javascript
JavaScript实现英语单词题库
Dec 24 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
Fatal error: Call to undefined function curl_init()解决方法
2010/04/09 PHP
php邮件发送,php发送邮件的类
2011/03/24 PHP
php检测文本的编码
2015/07/26 PHP
thinkPHP5.0框架自动加载机制分析
2017/03/18 PHP
浅析php如何实现爬取数据原理
2018/09/27 PHP
laravel 使用auth编写登录的方法
2019/09/30 PHP
js验证表单大全
2006/11/25 Javascript
腾讯的ip接口 方便获取当前用户的ip地理位置
2010/11/25 Javascript
jquery 操作表格实现代码(多种操作打包)
2011/03/20 Javascript
Raphael带文本标签可拖动的图形实现代码
2013/02/20 Javascript
仿淘宝TAB切换搜索框搜索切换的相关内容
2014/09/21 Javascript
jquery 构造函数在表单提交过程中修改数据
2015/05/25 Javascript
关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别
2015/10/12 Javascript
教你如何在Node.js中使用jQuery
2016/08/28 Javascript
node.js文件上传处理示例
2016/10/27 Javascript
微信小程序 配置文件详细介绍
2016/12/14 Javascript
jquery动态赋值id与动态取id方法示例
2017/08/21 jQuery
AngularJS实现的锚点楼层跳转功能示例
2018/01/02 Javascript
Angular2.0实现modal对话框的方法示例
2018/02/18 Javascript
Node 代理访问的实现
2019/09/19 Javascript
[01:11:32]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python函数式编程指南(四):生成器详解
2015/06/24 Python
python+django加载静态网页模板解析
2017/12/12 Python
解决Django的request.POST获取不到内容的问题
2018/05/28 Python
Django 1.10以上版本 url 配置注意事项详解
2019/08/05 Python
浅谈matplotlib.pyplot与axes的关系
2020/03/06 Python
Python numpy大矩阵运算内存不足如何解决
2020/11/19 Python
带有css3动画效果的兼容多浏览器简单导航条示例
2014/01/26 HTML / CSS
利用CSS3把图片变成灰色模式的实例代码
2016/09/06 HTML / CSS
编写html5时调试发现脚本php等网页js、css等失效
2013/12/31 HTML / CSS
澳大利亚最大的网上油画销售画廊:Direct Art Australia
2018/04/15 全球购物
大学生个人求职信范文
2013/09/21 职场文书
经销商会议欢迎词
2014/01/11 职场文书
高二物理教学反思
2014/02/08 职场文书
《灰椋鸟》教学反思
2014/04/27 职场文书
Win10 heic文件怎么打开 ? Win10 heic文件打开教程
2022/04/06 数码科技