我必须阅读Location标头,但$ resource中的transformResponse没有被调用

时间:2015-08-18 13:33:07

标签: javascript angularjs rest

我有以下$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标题?

0 个答案:

没有答案