依赖:$httpBackend $cacheFactory $rootScope $q $injector

使用:$http(config);

参数

method:字符串,请求方法。

url:字符串,请求地址。

params:字符串或者对象,将使用paramserializer序列化并且作为GET请求的参数。

data:字符串或者对象,作为请求信息数据的数据。

headers:对象,字符串或者函数返回表示发送到服务器的HTTP请求头。如果函数的返回值为空,则headers则不发送。函数接受一个配置对象作为参数。

xsrfHeaderName:字符串,填充XSRF令牌的HTTP请求头名称。

xsrfCookieName:字符串,含有XSRF令牌cookie的名字。

transformRequest:函数/函数的数组。转换函数或者一个包含转换函数的数组。转换函数获取http请求体和请求头,并且返回他们的转换版(通常是序列化)。

transformResponse:函数/函数的数组。转换函数或者一个包含转换函数的数组。转换函数获取http响应体和响应头,并且返回他们的转换版(通常是序列化)。

paramSerializer:字符串或者返回字符串的函数。用于编写请求参数(指定为对象)的字符串表示形式的函数。如果指令是字符串,那么将被解释为通过$injector注册的函数,这意味着你能通过注册服务方式创建你自己的序列化程序。默认的序列化是$httpParamSerializer;或者你可以使用$httpParamSerializerJQLike。

cache:boolean,如果为true,一个默认的$http缓存将被作为请求的缓存,否则如果存在一个用$cacheFactory创建的缓存实例,则将用于缓存。

timeout:数值,毫秒,超时则让请求中止。

withCredentials:boolean,是否设置withcredentials flag的XHR对象。查看更多信息的凭据。

responseType:字符串,响应头类型。

返回

data:字符串或对象。变换函数变换后的响应体。

status:数值,响应的http状态码。

headers:函数,响应头的getter函数。

config:对象,用于生成请求的配置对象。

statusText:字符串,响应的HTTP状态文本。

方法

get(url,[config]);

url:请求地址。

config:请求配置对象。

delete(url,[donfig]);

url:请求地址。

config:请求配置对象。

head(url,[config]);

url:请求地址。

config:请求配置对象。

jsonp(url,[config]);

url:请求地址。

config:请求配置对象。

post(url,data,[config]);

url:请求地址。

data:请求内容。

config:请求配置对象。

put(url,data,[config]);

url:请求地址。

data:请求内容。

config:请求配置对象。

patch(url,data,[config]);

url:请求地址。

data:请求内容。

config:请求配置对象。

属性

pendingRequests

当前正在等待的请求的配置对象数组。主要是为了用于调试目的。

defaults  

请求头配置默认属性。

$httpParamSerializerJQLike

Http参数序列化程序。序列化程序也将按字母顺序排序的参数。

使用代码:

(function () {
angular.module("Demo", [])
.controller("testCtrl",["$http", "$httpParamSerializerJQLike",testCtrl]);
function testCtrl($http, $httpParamSerializerJQLike){
var data = { id: 1, value: "hello" };//
$http({
method: "post",
data: data,//Form Data = {"id":1,"value":"hello"}
url: "/url",
headers: { "Content-Type": "application/x-www-form-urlencoded" }
}).success(function (d) { console.log(d); }).error(function(error){console.log(error);}); $http({
method: "post",
data: $httpParamSerializerJQLike(data),//Form Data 变成 id:1 value:hello url: "/url",
headers: { "Content-Type": "application/x-www-form-urlencoded" }
}).success(function(d){ console.log(d);}).error(function(error){ console.log(error);});
};
}());

当然,这种链式写法相比于jq的$ajax有更好的体验。但是,这仍然不是终极版。

在ES6中,我们有了确定的规则——promise,回调函数。

so,我们可以:

var promise = $http({
//.....
}); promise.then().catch();

OK,就这样。

最后补充一点,之前我尝试进行代码复用,然后发现很扯淡,$http默认是异步的,那么data就无法取出,除非你的所有数据使用方式是一样的。

当然也可以搞个函数参数传进去,不过我想如果不是闲的蛋疼就别了。

--------------------------------------------------------------------------------------2017.4.6 9:57:00-----------------------------------------------------------------

1。 angular1.6版本之后采用es6的回调写法,使用起来更方便。

2. 关于$http post参数上传后台接受不到的情况,需要配置config,代码如下:

.config(['$httpProvider', function($httpProvider) {
$httpProvider.defaults.headers.post["Content-Type"] =
"application/x-www-form-urlencoded";
$httpProvider.defaults.
transformRequest.unshift(function(data,
headersGetter) {
var key, result = [];
for (key in data) {
if (data.hasOwnProperty(key)) {
result.push(encodeURIComponent(key) + "="
+ encodeURIComponent(data[key]));
}
}
return result.join("&");
});
}])

angular中的$http配置和参数的更多相关文章

  1. angular中通过$location获取路径(参数)的写法

    以下获取与修改的 URL 以  ( http://172.16.0.88:8100/#/homePage?id=10&a=100  ) 为例 [一]获取 (不修改URL) //1.获取当前完整 ...

  2. Oracle12c中配置实例参数和修改容器数据库(CDB)及可插拔数据库(PDB)

    Oracle12c中的多宿主选项允许一个容器数据库(CDB)容纳多个独立的可插拔数据库(PDB).本文将展示如何配置实例参数和修改容器数据库(CDB)及可插拔数据库(PDB).1. 配置CDB中的实例 ...

  3. Angular中通过$location获取地址栏的参数详解

    Angular中通过$location获取url中的参数 最近,项目开发正在进行时,心有点燥,许多东西没来得及去研究,今天正想问题呢,同事问到如何获取url中的参数,我一时半会还真没想起来,刚刚特意研 ...

  4. 如何在IAR中配置CRC参数(转)

    源:如何在IAR中配置CRC参数 前言 STM32全系列产品都具有CRC外设,对CRC的计算提供硬件支持,为应用程序节省了代码空间.CRC校验值可以用于数据传输中的数据正确性的验证,也可用于数据存储时 ...

  5. MyEclipse中Tomcat对应JVM的参数配置

    MyEclipse中Tomcat对应JVM的参数配置: -Xmx512M -Xms256M -XX:MaxPermSize=256m

  6. angular中控制器之间传递参数的方式

    在angular中,每个controller(控制器)都会有自己的$scope,通过为这个对象添加属性赋值,就可以将数据传递给模板进行渲染,每个$scope只会在自己控制器内起作用,而有时候需要用到其 ...

  7. 电机噪声之谐波分析(内附simulink中FFT分析的相关参数配置与解析)

    电机噪声之谐波分析(内附simulink中FFT分析的相关参数配置与解析) 目录 电机噪声之谐波分析(内附simulink中FFT分析的相关参数配置与解析) 写在前面 正文 电机噪声 谐波的产生 什么 ...

  8. angular中使用ngResource模块构建RESTful架构

    ngResource模块是angular专门为RESTful架构而设计的一个模块,它提供了'$resource'模块,$resource模块是基于$http的一个封装.下面来看看它的详细用法 1.引入 ...

  9. angular源码分析:angular中$rootscope的实现——scope的一生

    在angular中,$scope是一个关键的服务,可以被注入到controller中,注入其他服务却只能是$rootscope.scope是一个概念,是一个类,而$rootscope和被注入到cont ...

随机推荐

  1. MP3拷贝程序---字节流

    package cn.itcast.p7.io.bytestream.test; import java.io.BufferedInputStream; import java.io.Buffered ...

  2. Android实现GIF图片解码与播放

    Android实现GIF图片解码与播放 如何在Android中播放GIF图片呢?如果直接按以前的方法,分解图片,可能相对比较麻烦. 今天给大伙介绍一种新的方式,构造自己的Android图片解码帮助类, ...

  3. Python 文件Hash(MD5,SHA1)

    import hashlib import os,sys   def CalcSha1(filepath):     with open(filepath,'rb') as f:         sh ...

  4. sql 日结

    --生成日结数据 ==================================== -- Author: <Author,,Name> -- Create date: <Cr ...

  5. Lucene + Hadoop 分布式搜索运行框架 Nut 1.0a9转自http://www.linuxidc.com/Linux/2012-02/53113.htm

    1.概述 不管程序性能有多高,机器处理能力有多强,都会有其极限.能够快速方便的横向与纵向扩展是Nut设计最重要的原则,以此原则形成以分布式并行计算为核心的架构设计.以分布式并行计算为核心的架构设计是N ...

  6. This compilation unit is not on the build path SVN

    This compilation unit is not on the build path of a Java project 解决办法​ 把项目导入STS(基于Eclipse)时,项目出现问题, ...

  7. “玲珑杯”ACM比赛 Round #1 题解

    A:DESCRIPTION Eric has an array of integers a1,a2,...,ana1,a2,...,an. Every time, he can choose a co ...

  8. J2SE基本数据结构

    1.J2SE中的常用数据结构对象的继承关系如下图 Collection ........|--------List ........|..........|----------ArrayList .. ...

  9. [code]字母重排

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  10. 实现RGB,CMY(K),YUV,YIQ,YCbCr颜色的转换算法

    源:http://blog.sina.com.cn/s/blog_4d80055a01000atu.html import java.lang.Math; import java.awt.*; pub ...