我们可以使用内置的$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。

AngularJS中$http服务的简单用法相关推荐

  1. Python爬虫及其它函数知识读记及简单用法,持续更新中...

    Python爬虫相关函数知识读记及简单用法,持续更新中- requests [riˈkwests] n. 请求,要求( request的名词复数 ): 需要: 所请求的事物: 申请书 函数或单词- 音 ...

  2. angularjs 实例_AngularJS服务示例教程

    angularjs 实例 Today we will look at one of the important angular concepts called AngularJS Services. ...

  3. 让AngularJS的$http 服务像jQuery.ajax()一样工作

    先比较下他们的差别 $http的post . 请求默认的content-Type=application/json . 提交的是json对象的字符串化数据, . 后端无法从post中获取, . 跨域请 ...

  4. ORM 一对一 以及csrf 的简单用法

    ORM 一对一 1. 什么时候用一对一? 当 一张表的某一些字段查询的比较频繁,另外一些字段查询的不是特别频繁 把不怎么常用的字段 单独拿出来做成一张表 然后用过一对一关联起来 2. 优势 既保证数据 ...

  5. EMCA和EMCTL的简单用法

    背景 其实这两个完全是两回事,不过倒是有关系,emca就是建立的资料库,建立后就用emctl来管理服务了.oem有问题基本都是重建emca,然后用emctl来操作. 当时用emca感觉真是一阵空白,太 ...

  6. AngularJS 的异步服务测试与Mocking

    测试 AngularJS 的异步服务 最近,在做项目时掉进了 AngularJS 异步调用 $q 测试的坑中,直接躺枪了.折腾了许久日子,终于想通了其中的道道,但并不确定是最佳的解决方案,最后还是决定 ...

  7. (P9)awk:什么是awk,awk简单用法,awk脚本语法,awk执行过程

    文章目录 1.什么是awk 2.awk简单用法 3.awk脚本语法 4.awk执行过程 1.什么是awk awk 是什么 awk 是一种用于处理数据和生成报告的编程语言 awk 可以在命令行中进行一些 ...

  8. 服务计算:简单的CLI程序

    Go Online传送门 Go Online 命令行程序是什么 CLI(Command Line Interface)实用程序是Linux下应用开发的基础.正确的编写命令行程序让应用与操作系统融为一体 ...

  9. 反编译工具jad简单用法

    反编译工具jad简单用法 下载地址: [url]http://58.251.57.206/down1?cid=B99584EFA6154A13E5C0B273C3876BD4CC8CE672& ...

最新文章

  1. HDU 1180 诡异的楼梯
  2. 广度优先搜索(入门)
  3. 微信扫描二维码和浏览器扫描二维码 ios和Android 分别进入不用的提示页面
  4. php 控制器 模板,php学习笔记(一)php模板与控制器
  5. js基础中Null、undefined、NaN、false、0、{}的理解及使用
  6. 云计算-从基础到应用架“.NET研究”构系列-云计算的演进
  7. 生成icon图标 1005 html 左上角icon图标
  8. android程序的建立,创建第一个Android程序 HelloWorld
  9. word 产生很多temp 不显示_Word与PPT互转,怎样才能30秒内搞定?教程来了
  10. spring jdbcTemplate查询使用
  11. 存储程序式计算机特征,冯.诺依曼机模型是以运算器为中心的存储程序式的计算机模型,它由五大部分构成,即运算器、控制器、存储器、输入设备和输出设备...
  12. 如何在PowerPoint中添加幻灯片编号
  13. [推荐系统]互联网推荐系统比较研究
  14. 在 Google 工作 10 年,到底能学到啥?
  15. Microsemi Libero SoC 教程2 (点亮LED闪烁)
  16. taskset 查询或设置进程绑定CPU(亲和性)
  17. matlab符号值,matlab 符号积分和数值积分
  18. 无为才能够无不为-曾仕强
  19. ​人工智能能否跨越意识鸿沟?
  20. 什么是cdn节点和cdn节点服务器?

热门文章

  1. 扇贝python课程免费_欣赏“旱扇”
  2. 网和aoe网的区别_阳泉锌铝石笼网信赖推荐
  3. 分享个ampak正基驱动文件,瑞芯微及安卓系统案例
  4. 【物联网学习笔记——人人学IoT系列】三、窄带无线,海量物联
  5. 循环冗余校验 (CRC) 计算的C++ 代码
  6. 一、坦克大战单机版策划
  7. 微信小程序——后管平台配置讲解
  8. 用Laravel-admin搭建问卷系统(持续更新)
  9. node 获取表单数据 为空_程序员:数据结构和算法,中序线索化二叉树
  10. npm run start和npm run serve