浅谈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 相关文章推荐
jQuery EasyUI API 中文文档 - NumberBox数字框
Oct 13 Javascript
JavaScript 语言基础知识点总结(思维导图)
Nov 10 Javascript
JS获取网页属性包括宽、高等等
Apr 03 Javascript
jquery实现搜索框常见效果的方法
Jan 22 Javascript
jquery实现手风琴效果
Nov 20 Javascript
JavaScript中eval()函数用法详解
Dec 14 Javascript
bootstrap-treeview自定义双击事件实现方法
Jan 09 Javascript
jQuery插件实现可输入和自动匹配的下拉框
Oct 24 Javascript
vue.js入门(3)——详解组件通信
Dec 02 Javascript
vue实现新闻展示页的步骤详解
Apr 11 Javascript
微信小程序事件对象中e.target和e.currentTarget的区别详解
May 08 Javascript
javascript实现倒计时提示框
Mar 02 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
PHP中SESSION使用中的一点经验总结
2012/03/30 PHP
php强制运行广告的方法
2014/12/01 PHP
幻宇的层模拟窗口效果-提供演示和下载
2007/01/20 Javascript
jquery.validate使用攻略 第五步 正则验证
2010/07/01 Javascript
半个小时学json(json传递示例)
2016/12/25 Javascript
JS异步文件分片断点上传的实现思路
2016/12/25 Javascript
AngularJS执行流程详解
2017/02/17 Javascript
nodejs之get/post请求的几种方式小结
2017/07/26 NodeJs
JS解决IOS中拍照图片预览旋转90度BUG的问题
2017/09/13 Javascript
vue移动端实现下拉刷新
2018/04/22 Javascript
bootstrap Table实现合并相同行
2019/07/19 Javascript
Vue 自定义指令功能完整实例
2019/09/17 Javascript
[01:48:04]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第一场 2月7日
2021/03/11 DOTA
使用Python程序抓取新浪在国内的所有IP的教程
2015/05/04 Python
Python实现配置文件备份的方法
2015/07/30 Python
21行Python代码实现拼写检查器
2016/01/25 Python
python取代netcat过程分析
2018/02/10 Python
Python实现繁?转为简体的方法示例
2018/12/18 Python
Python实现i人事自动打卡的示例代码
2020/01/09 Python
CSS中的字体大小设置属性总结
2016/05/24 HTML / CSS
socket.io 和canvas 实现的共享画板功能
2019/05/22 HTML / CSS
使用CSS实现弹性视频html5案例实践
2012/12/26 HTML / CSS
Mountain Warehouse波兰官方网站:英国户外品牌
2019/08/29 全球购物
与UNIX有关的几个名词
2015/09/17 面试题
自荐信格式技巧有哪些呢
2013/11/19 职场文书
团员个人的自我评价
2013/12/02 职场文书
幼儿教师工作感言
2014/02/14 职场文书
大学新闻系自荐书
2014/05/31 职场文书
欢迎标语大全
2014/06/21 职场文书
先进事迹演讲稿
2014/09/01 职场文书
医院见习报告范文
2014/11/03 职场文书
2015年妇女工作总结
2015/05/14 职场文书
入党介绍人意见2015
2015/06/01 职场文书
运动会通讯稿200字
2015/07/20 职场文书
Python基础之常用库常用方法整理
2021/04/30 Python
OpenCV图像变换之傅里叶变换的一些应用
2021/07/26 Python