浅谈AngularJS中$http服务的简单用法


Posted in Javascript onMay 15, 2018

我们可以使用内置的$http服务直接同外部进行通信。$http服务只是简单的封装了浏览器原生的XMLHttpRequest对象。

1、链式调用

$http服务是只能接受一个参数的函数,这个参数是一个对象,包含了用来生成HTTP请求的配置内容。这个函数返回一个promise对象,具有success和error两个方法。

$http({
url:'data.json',
method:'GET'
}).success(function(data,header,config,status){
//响应成功

}).error(function(data,header,config,status){
//处理响应失败
});

2、返回一个promise对象

var promise=$http({
method:'GET',
url:"data.json"
});

由于$http方法返回一个promise对象,我们可以在响应返回时用then方法来处理回调。如果使用then方法,会得到一个特殊的参数,它代表了相应对象的成功或失败信息,还可以接受两个可选的函数作为参数。或者可以使用success和error回调代替。

promise.then(function(resp){
//resp是一个响应对象

},function(resp){
//带有错误信息的resp

});

或者这样:

promise.success(function(data,status,config,headers){
//处理成功的响应
});

promise.error(function(data,status,hedaers,config){
//处理失败后的响应
});

then()方法与其他两种方法的主要区别是,它会接收到完整的响应对象,而success()和error()则会对响应对象进行析构。

3、快捷的get请求

①$http.get('/api/users.json');

get()方法返回HttpPromise对象。

还可以发送比如:delete/head/jsonp/post/put 函数内可接受参数具体参照148页

②以再发送jsonp请求举例说明: 为了发送JSONP请求,其中url必须包含JSON_CALLBACK字样。

jsonp(url,config) 其中config是可选的

var promise=$http.jsonp("/api/users.json?callback=JSON_CALLBACK");

4、也可以将$http当做函数来使用,这时需要传入一个设置对象,用来说明如何构造XHR对象。

$http({
method:'GET',
url:'/api/users.json',
params:{
'username':'tan'
});

其中设置对象可以包含以下主要的键:

①method

可以是:GET/DELETE/HEAD/JSONP/POST/PUT

②url:绝对的或者相对的请求目标

③params(字符串map或者对象)

这个键的值是一个字符串map或对象,会被转换成查询字符串追加在URL后面。如果值不是字符串,会被JSON序列化。

比如这个:

//参数会转为?name=ari的形式
$http({
params:{'name':'ari'}
});

④data(字符串或者对象)

这个对象中包含了将会被当作消息体发送给服务器的数据。通常在发送POST请求时使用。

从AngularJS 1.3开始,它还可以在POST请求里发送二进制数据。要发送一个blob对象,你可以简单地通过使用data参数来传递它。

例如:

var blob=new Blob(['Hello world'],{type:'text/plain'});
$http({
method:'POST',
url:'/',
data:blob
});

4、响应对象

AngularJS传递给then()方法的响应对象包含了四个属性。

◇data:这个数据代表转换过后的响应体(如果定义了转换的话)

◇status:响应的HTTP状态码

◇headers:这个函数是头信息的getter函数,可以接受一个参数,用来获取对应名字值

例如,用如下代码获取X-Auth-ID的值:

$http({
method: 'GET',
url: '/api/users.json'
}).then (resp) {
// 读取X-Auth-ID
resp.headers('X-Auth-ID');
});

◇config:这个对象是用来生成原始请求的完整设置对象。

◇statusText(字符串):这个字符串是响应的HTTP状态文本。

5、缓存HTTP请求

默认情况下,$http服务不会对请求进行本地缓存。在发送单独的请求时,我们可以通过向$http请求传入一个布尔值或者一个缓存实例来启用缓存。

$http.get('/api/users.json',{ cache: true })
.success(function(data) {})
.error(function(data) {});

第一次发送请求时,$http服务会向/api/users.json发送一个GET请求。第二次发送同一个GET请求时,$http服务会从缓存中取回请求的结果,而不会真的发送一个HTTP GET请求。
在这个例子里,由于设置了启用缓存,AngularJS默认会使用$cacheFactory,这个服务是AngularJS在启动时自动创建的。

如果想要对AngularJS使用的缓存进行更多的自定义控制,可以向请求传入一个自定义的缓存实例代替true。

学习angular,个人推荐书籍《AngularJS权威教程》电子PDF版地址如下: https://3water.com/books/255696.html

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript Scoping and Hoisting 翻译
Jul 03 Javascript
JS图片预加载 JS实现图片预加载应用
Dec 03 Javascript
Jquery同辈元素选中/未选中效果的实例代码
Aug 01 Javascript
基于JavaScript实现 网页切出 网站title变化代码
Apr 03 Javascript
浅谈Javascript数组(推荐)
May 17 Javascript
jQuery封装的屏幕居中提示信息代码
Jun 08 Javascript
基于JS实现导航条之调用网页助手小精灵的方法
Jun 17 Javascript
JS正则获取HTML元素的方法
Mar 31 Javascript
JavaScript查看代码运行效率console.time()与console.timeEnd()用法
Jan 18 Javascript
JS桶排序的简单理解与实现方法示例
Nov 25 Javascript
Vue.js实现立体计算器
Feb 22 Javascript
使用vue实现HTML页面生成图片的方法
Mar 12 Javascript
Vue项目webpack打包部署到Tomcat刷新报404错误问题的解决方案
May 15 #Javascript
解决linux下node.js全局模块找不到的问题
May 15 #Javascript
vue :src 文件路径错误问题的解决方法
May 15 #Javascript
利用npm 安装删除模块的方法
May 15 #Javascript
vux uploader 图片上传组件的安装使用方法
May 15 #Javascript
使用webpack搭建react开发环境的方法
May 15 #Javascript
浅谈Node.js 沙箱环境
May 15 #Javascript
You might like
Thinkphp模板中截取字符串函数简介
2014/06/17 PHP
PHP+MySQL实现消息队列的方法分析
2018/05/09 PHP
JS中完美兼容各大浏览器的scrolltop方法
2015/04/17 Javascript
Node.js实现数据推送
2016/04/14 Javascript
使用JQuery中的trim()方法去掉前后空格
2016/09/16 Javascript
js实现省份下拉菜单效果
2017/02/15 Javascript
webstorm添加vue.js支持的方法教程
2017/07/05 Javascript
JS判断微信扫码的方法
2017/08/07 Javascript
mui 打开新窗口的方式总结及注意事项
2017/08/20 Javascript
angular4自定义组件非input元素实现ngModel双向数据绑定的方法
2018/12/28 Javascript
javascript canvas检测小球碰撞
2020/04/17 Javascript
在vue中实现echarts随窗体变化
2020/07/27 Javascript
.netcore+vue 实现压缩文件下载功能
2020/09/24 Javascript
动态实现element ui的el-table某列数据不同样式的示例
2021/01/22 Javascript
python实现简单的TCP代理服务器
2014/10/08 Python
零基础写python爬虫之抓取百度贴吧代码分享
2014/11/06 Python
Python实现Const详解
2015/01/27 Python
python下载文件时显示下载进度的方法
2015/04/02 Python
Tensorflow卷积神经网络实例
2018/05/24 Python
Python格式化字符串f-string概览(小结)
2019/06/18 Python
PyQt5基本控件使用之消息弹出、用户输入、文件对话框的使用方法
2019/08/06 Python
使用PyQt5实现图片查看器的示例代码
2020/04/21 Python
详解使用Python写一个向数据库填充数据的小工具(推荐)
2020/09/11 Python
阿联酋团购网站:Groupon阿联酋
2016/10/14 全球购物
英国二手物品交易网站:Preloved
2017/10/06 全球购物
意大利时尚奢侈品店:D’Aniello Boutique
2021/01/19 全球购物
应用服务器有那些
2012/01/19 面试题
优秀求职自荐信怎样写
2013/12/18 职场文书
致跳远、跳高运动员广播稿
2014/01/09 职场文书
预备党员学习十八届三中全会精神思想汇报
2014/09/13 职场文书
2015年度党员自我评价范文
2015/03/03 职场文书
2016年第十九届推普周活动总结
2016/04/06 职场文书
小学四年级作文之最感动的一件事
2019/11/01 职场文书
Canvas三种动态画圆实现方法说明(小结)
2021/04/16 Javascript
使用python求解迷宫问题的三种实现方法
2022/03/17 Python
JavaScript前端面试扁平数据转tree与tree数据扁平化
2022/06/14 Javascript