【发布时间】:2016-09-16 17:09:21
【问题描述】:
我对 ngResource 的行为感到非常困惑,当调用 get 方法时,成功回调有简单的响应数据:
svc.userApi().get({id:0})
.$promise.then(
function(response) {
console.log(response);
});
这里的response 是后端返回的任何数据。但是,如果我使用 save/post 方法:
svc.authenticateApi().save({
username: username,
password: password
})
.$promise.then(
function(val) {
console.log("user token:", val);
});
回调中的val不是post操作后后端返回的数据,而是一个资源对象,具有$promise和$resolved等属性:
为了获得正确的数据,我必须在定义authenticateApi 时定义一个transformResponse 选项。 (详见question)。为什么 ngResource 是这样设计的?
作为比较,使用$http 时非常简单:
svc.login = function(username, password) {
return $http.post(apiEndpoint + 'authenticate', {
username: username,
password: password
})
.then(function(val) {
console.log("user token:", val.data);
});
};
成功回调中的val.data 又是一个普通的响应数据:
我是否使用了错误的保存/发布方式?在我的用例中,在成功通过身份验证后,您还能如何取回身份验证令牌?
【问题讨论】:
标签: javascript angularjs http ngresource