我正在使用$ http到ngResource重构我的角度代码。
我以前在我的服务中有这样的代码:
svc.login = function(username, password) {
return $http.post(apiEndpoint + 'authenticate', {
username: username,
password: password
})
.then(function(val) {
console.log("user token:", val.data);
svc.token = val.data;
});
};
打印的用户令牌将是一个jwt令牌。现在我尝试将代码重构为以下内容:
svc.login = function(username, password) {
svc.authenticateApi().post(apiEndpoint + 'authenticate', {
username: username,
password: password
},
function(val) {
console.log("user token:", val);
svc.token = val;
},
function(res) {
console.log("error:", res.status + " " + res.statusText);
});
};
但是,它不起作用,因为传递给第一个回调的参数val
不再是令牌本身,而是包含如下字符串数组的对象:
处理post方法返回的数据的标准方法是什么? (在这种情况下,post定义与此资源上的save
相同)
答案 0 :(得分:1)
我认为问题来自transformRespose
transformResponse - {function(data,data, headersGetter)| Array。} - transform 函数或这些函数的数组。转换函数需要 http响应主体和标头,并返回其转换 (通常反序列化)版本。默认情况下,transformResponse会 包含一个函数,用于检查响应是否看起来像JSON 使用angular.fromJson对其进行字符串和反序列化。为了防止这种情况 行为,将transformResponse设置为空数组:transformResponse: []
尝试将您的回复转换为json:
transformResponse: function (data) {
return { token: angular.fromJson(data) }