我有以下$resouce
服务:
$scope.scenesResource = $resource(scenesUrl + ':lang/:id', {
lang: '@lang',
id: '@id'
}, {
create: {
method: 'POST',
headers: {
Authorization: localStorage.tokenType + ' ' + localStorage.accessToken
},
transformResponse: function (data, headers) {
//This is never getting called
console.log(data);
console.log(headers);
}
}
};
尽管存在任何安全问题,例如从本地存储中读取访问令牌或从未使其过期,create
方法仍可正常工作。
我的意思是,它使用正确的Authorization
标头发出请求,并从服务器获得201 Created
响应。
问题在于,服务器不是在响应主体或有效负载中使用新资源的id进行响应,而是返回Location
标头:
Location: /scenes/en-us/ODc1ZmYwNzUtZDA5MS00ZWJkLTgyODYtZWUzMGMyMDdhMmYx
我在create
方法上有一个promise函数:
newResource.$create().then(function (newScene) {
//Handle scene
});
正如您所看到的,我需要newScene
填充服务器响应的所有信息,以便我能够正确处理它。但是此信息位于Location
标题中。
我无法使用上面示例中的transformResponse
方法读取此标头,因为该方法永远不会被调用。
如何使用Location
阅读我的$resource
标题?