我基本上是这样打get
个请求:
var resource = $resource('/api/v1/categories/:id')
resource.get({id: 1}).$promise.then(function(data){
console.log(data)
})
这样可以正常工作..但是如何获得响应头?
答案 0 :(得分:39)
您可以使用transformResponse操作defined here这可以添加标题
$resource('/', {}, {
get: {
method: 'GET',
transformResponse: function(data, headers){
response = {}
response.data = data;
response.headers = headers();
return response;
}
}
请参阅此处的工作示例JSFiddle
答案 1 :(得分:18)
@ Martin的答案适用于相同的域请求。所以我想补充一点,如果您使用跨域请求,则必须添加另一个带有Access-Control-Expose-Headers: X-Blah, X-Bla
的标头以及Access-Control-Allow-Origin:*
标头。
其中X-Blah
和X-Bla
是自定义标头。
此外,您无需使用转换请求来获取标头。您可以使用以下代码:
var resource = $resource('/api/v1/categories/:id')
resource.get({id: 1}, function(data, headersFun){
console.log(data, headersFun());
})
请参阅this小提琴。 希望这会有所帮助!!!
答案 2 :(得分:6)
老问题,但我认为值得一提,以备将来参考。 有官方的'角度文档中的解决方案:
值得注意的是get,query等成功回调 方法也在来自服务器的响应中传递 作为$ http header getter函数,所以可以重写上面的内容 示例并获取http标头的访问权限:
var User = $resource('/user/:userId', {userId:'@id'});
var users = User.query({}, function(users, responseHeaders){
// ...
console.log(responseHeaders('x-app-pagination-current-page'));
});
(文档中的代码为了清晰起见略微更新)
对于CORS请求,需要公开其他答案中提到的标题。