第五章:与服务器通信
使用 $http 通信
$http.get('api/user', {params: {id: '5'}
}).success(function(data, status, headers, config) {
// Do something successful.
}).error(function(data, status, headers, config) {
// Handle the error
});
给大部分常用请求类型,包括:
GET
HEAD
POST
DELETE
PUT
JSONP
config $http
$http(config)
$http({
method: string,url: string,params: object,data: string or object,headers: object,transformRequest: function transform(data, headersGetter) or an array of functions,transformResponse: function transform(data, headersGetter) or an array of functions,cache: boolean or Cache object,timeout: number,withCredentials: boolean
});
method
一个 HTTPHTTPHTTP 请求类型的字符串,比如 请求类型的字符串,比如 请求类型的字符串,比如 请求类型的字符串,比如 请求类型的字符串,比如 GET ,POST
url
一个 URLURLURL字符串,表示请求资源的 绝对或相字符串 。
params
一个字符串到对象(准确的键值映射),表示将会转换成 一个字符串到对象(准确的键值映射)例如:
[{key1: 'value1', key2: value2'}]
将转换成: 将转换成:
?key1=value1&key2=value2
data
一个字符串或者对象,作为请求消息数据发送出去
timeout
在请求处理前需要等待的毫秒数
设置 HTTPHTTPHTTP 报头
AngularJS 有默认的 报头 ,它应用与所有发出的请求包括如下:
1. Accept: application/json, text/plain,
2. X-RequestedRequested RequestedRequested RequestedRequested -With: XMLHttpRequestWith:
如果你想设置任何指定的 报头 ,有两种方式来做。
在请求和响应间做转换
通过 $http服务, AngularJS 可以在所有的请求和响应上用一些基本转换。这包括:
请求转换
如果请求中的 config 对象的 对象的 data datadata属性包含一个对象,JSON格式
响应转换
如果检测到
XSRF前缀,剥离它那么用 响应,那么用 JSON解析器序列 化它。
如果你不想做一些转换,或添加自定义的那么可以传递函数作为 如果你不想做一些转换,或添加自定义的那么可以传递函数作为 config 部分。
$resource 提供了这样的能力, AngularJS 资源允许我们以描述的方式定义对象模型,从 而指定:
Resource 的服务端 URL
这类请求的常见参数型
一些额外的方法(自由使用 一些额外的方法get,save,query,remove,delete)为对象模型 的函数 功能 和业务逻辑。 和业务逻辑。
期望的响应类型(数组或对象)
报头
$q 和 Promise
响应拦截
安全考虑
JSON 漏洞
XSRF
跨站点请求伪造 攻击