zoukankan      html  css  js  c++  java
  • AngularJS中的http服务的简单用法

    我们可以使用内置的$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权威教程》

  • 相关阅读:
    HDOJ 5414 CRB and String 模拟
    Python标准库:内置函数all(iterable)
    Can not find a java.io.InputStream with the name [downloadFile] in the invocation stack.
    关于TabLayout+ViewPager组合实现多页面滑动
    互联网产品经理应该具备的技能(需求篇)
    【Android】利用自己定义View的重绘实现拖动移动,获取组件的尺寸
    mybatis自己主动生成mapper,dao,映射文件
    Java解析注解
    如日中天的Uber到底是用什么开发语言做到的?
    [Swift]LeetCode1002. 查找常用字符 | Find Common Characters
  • 原文地址:https://www.cnblogs.com/shirly77/p/6477570.html
Copyright © 2011-2022 走看看