之前说到的$http.get和$http.post,都是基于$http的快捷方式.下面来说说完整的$http:

$http(config)

$http接受一个json格式的参数config:

config的格式如下:

{

  method:字符串 ,

  url:字符串,

  params:json对象,

  data:请求数据,

  headers:请求头,

  transformRequest:函数,转换post请求的数据的格式,

  transformResponse:函数,转换响应到的数据的格式,

  cache:布尔值,

  timeout:数值,从发出请求开始计算,等待的毫秒数,超过这个数还没有响应,则返回错误

  withCredentials:布尔值

}

1.method: (必填)

请求的方法,字符串格式,'post','get','head','delete','put','jsonp'

(其中head方法和get请求方式一致,但是head方法没有响应体,只有响应状态码,用于检测该url是否可以获得get请求)

2.url: (必填)

请求的路径,字符串格式

3.params:

请求带有的参数,json对象:

{key1:'value1',key2:'value2'}

//转换成

url?key1=value1&key2=value2

4.data:

post请求所提交的数据,字符串或者json对象

5.headers:

请求头,json对象,可以自定义配置http请求头的参数

6.transformRequest:

函数,转换post请求的数据的格式

7.transformResponse:

函数,转换响应到的数据的格式

8.cache:

布尔值,是否启用缓存(暂时不懂,需要请教老公)

9.timeout:

数值,从发出请求开始计算,等待的毫秒数,超过这个数还没有响应,则返回错误

10.withCredentials:

不懂

$http()返回一个对象,该对象有三个方法:

1. then([success],[error]):

.then()方法传入两个参数:

[success]: function(res){}

第一个参数是一个请求成功的回调函数,该函数接受1个参数res,res是一个json对象,它有四个属性值,分别是data,status,headers,congfig,这四个值就是http://www.cnblogs.com/liulangmao/p/3864954.html这里面的.success()方法传入的函数的四个参数

[error]: function(res){}

第二个参数是一个请求失败的回调函数,该函数接受1个参数res,res是一个json对象,它有四个属性值,分别是data,status,headers,congfig,这四个值就是http://www.cnblogs.com/liulangmao/p/3864954.html这里面的.error()方法传入的函数的四个参数

2. success(function(){})

.success方法传入一个参数,是请求成功的回调.该函数接受4个参数,分别就是data,status,headers,congfig,和http://www.cnblogs.com/liulangmao/p/3864954.html里面的.success()方法传入的函数的四个参数是一样的.

3. error(function(){})

.error方法传入一个参数,是请求失败的回调.该函数接受4个参数,分别就是data,status,headers,congfig,和http://www.cnblogs.com/liulangmao/p/3864954.html里面的.error()方法传入的函数的四个参数是一样的.

注意: 其中,.success和.error两个方法都返回调用自己的这个对象,所以这个对象还是具有了.then(),.success(),.error()方法,所以可以链式调用:

    var obj1 = $http({
method:'GET',
url:'/name'
}); var obj2 = obj1.success(function(res){data,status,headers,config}); var obj3 = obj2.error(function(res){data,status,headers,config}); console.log(obj1 === obj2); //true
console.log(obj1 === obj3); //true

但是.then方法不是返回调用.then的对象... 它返回的是一个promise对象... 所以它只有.then方法,二不再有.success和.error方法:

    var obj = $http({
method:'GET',
url:'/name'
}); obj.then(function(res){return res.data+'2'},function(res){return '失败'}).then(function(data){console.log(data)},function(data){alert(data)});

关于promise的.then()方法,详见: http://www.cnblogs.com/liulangmao/p/3907571.html

在这里无论请求是成功还是失败,第二次调用.then都会调用成功回调(因为它对promise发送的通知是成功通知),回调函数中的data就是上一个.then()的回调的返回值,如果是成功回调.也就是res.data+'2',如果是失败回调,那就是'失败'

angular学习笔记(二十三)-$http(1)-api的更多相关文章

  1. angular学习笔记(二十九)-$q服务

    angular中的$q是用来处理异步的(主要当然是http交互啦~). $q采用的是promise式的异步编程.什么是promise异步编程呢? 异步编程最重要的核心就是回调,因为有回调函数,所以才构 ...

  2. angular学习笔记(二十八-附2)-$http,$resource中的promise对象

    下面这种promise的用法,我从第一篇$http笔记到$resource笔记中,一直都有用到: HttpREST.factory('cardResource',function($resource) ...

  3. angular学习笔记(二十七)-$http(5)-使用$http构建RESTful架构

    在angular中有一个特别为RESTful架构而定制的服务,是在$http的基础上进行了封装. 但是为了学习,我们先看看用直接$http是如何构建RESTful架构的: 假设有一个银行卡的列表.需要 ...

  4. angular学习笔记(二十六)-$http(4)-设置请求超时

    本篇主要讲解$http(config)的config中的timeout项: $http({ timeout: number }) 数值,从发出请求开始计算,等待的毫秒数,超过这个数还没有响应,则返回错 ...

  5. angular学习笔记(二十五)-$http(3)-转换请求和响应格式

    本篇主要讲解$http(config)的config中的tranformRequest项和transformResponse项 1. transformRequest: $http({ transfo ...

  6. angular学习笔记(二十四)-$http(2)-设置http请求头

    1. angular默认的请求头: 其中,Accept 和 X-Requested-With是$http自带的默认配置 Accept:application/json,text/plain       ...

  7. angular学习笔记(二十二)-$http.post

    基本语法: $http.post('url',{},{}).success(function(data,status,headers,config){ }).error(function(data,s ...

  8. angular学习笔记(二十一)-$http.get

    基本语法: $http.get('url',{}).success(function(data,status,headers,config){}).error(function(data,status ...

  9. angular学习笔记(二)-创建angular模块

    如果在页面的html标签(或任意标签)中添加ng-app,表示对整个页面应用angular来管理. 他是一个模块. 模块有助于把东西从全局命名空间中隔离. 今天学习如何自定义创建模块: <!DO ...

随机推荐

  1. CSS3去除手机浏览器button点击出现的高亮框

    在工作中常常遇到在手机浏览器中浏览网页时.点击页面中的button或者是具备点击事件的元素,就会出现一个默认的高亮框.影响总体的感官体验. 能够用一个简单的css3属性来解决:tap-highligh ...

  2. 算法笔记_175:历届试题 蚂蚁感冒(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 长100厘米的细长直杆子上有n只蚂蚁.它们的头有的朝左,有的朝右. 每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒. 当两只蚂蚁碰面时,它 ...

  3. position sticky 定位

    1.兼容性 https://caniuse.com/#search=sticky chrome.ios和firefox兼容性良好. 2.使用场景 sticky:粘性.粘性布局. 在屏幕范围内时,元素不 ...

  4. 解决 maven 项目启动 提示 class not find

    第一种方法: 项目 --> .classpath <classpathentry exported="true" kind="con" path=& ...

  5. sql server 2008分页

    SELECT id, name, staffopenid, imageurl, content, ordernum, praisenum, createdate, lable, label2, man ...

  6. Android4.0-4.4 加入实体按键振动支持的方法(java + smali版本号)

    有些手机比方泛泰A820L, 泛泰A890 A900 以及Nubia Z5S 和Z5S mini具有实体按键(这里所说的实体按键是相对于虚拟按键而言, 包括物理按键和触摸屏上多出来的触摸实体按键), ...

  7. jsp&html页面知识点集锦

      CreateTime--2016年12月16日16:08:03Author:Marydonjsp&html页面知识点集锦1.标签的class属性 标签同时拥有多个class时,要写在同一个 ...

  8. 〖Linux〗Shell脚本修改输出文字颜色

    Shell函数: echocolor(){ color=${} && shift case ${color} in black) echo -e "\e[0;30m${@}\ ...

  9. 〖Linux〗zigbee实验之cc2430移植tinyos2.x的步骤(Ubuntu13.10)

    开发环境:Ubuntu13.10 1. 添加源,并安装tinyos-2.11:sudo gedit  /etc/apt/sources.list #往里边添加deb http://tinyos.sta ...

  10. 在交叉编译中使用最新版的SS

    因为旧版本的ss-local总是出现 shake hands failed 错误, 打算用最新的版本试试, 所以尝试在编译中使用最新版的shadowsocks. 项目地址 Shadowsocks-li ...