我使用angular-http-auth来显示一个登录对话框,每当从服务器返回401“未经授权”的响应。
由于我很酷,我也尝试反序列化我的服务中的响应对象。例如,如果服务请求car
,并且响应是{make: Honda, model: Civic}
,我尝试使用transformResponse
将其反序列化为Car
对象。
例如:
getCar: function() {
return $http.get('/api/car', {
method: 'GET',
transformResponse: function(data, headers) {
var c = angular.fromJson(data);
return new Car(c);
}
});
}
这不会angular-http-auth工作。如果响应是401未经授权,您将得到一个javascript错误。这是因为角度会尝试运行即使响应是401
事实证明,$http
拦截器(这是什么angular-http-auth用途)是在transformResponse
代码之后运行transformResponse
代码。这是一个巨大的问题,因为transformResponse
中没有任何代码将工作,如果服务器的响应是401(不会有任何data
)
这是其他人的问题?你是如何解决它的?如果我使用$http
拦截器,我不使用transformResponse
吗?