我正在使用符合
JSONAPI标准的API,其中一种格式要求是所有数据(传入和传出)都必须包含在数据对象中。所以我的请求看起来像:
{ "data": { "email": "email@example.com","password": "pass","type": "sessions" } }
我的回答如下:
{ "data": { "user_id": 13,"expires": 7200,"token": "gpKkNpSIzxrkYbQiYxc6us0yDeqRPNRb9Lo1YRMocyXnXbcwXlyedjPZi88yft3y" } }
在我的控制器中,当进行新的会话请求时,我有:
$scope.signin = -> session = new Session email: $scope.user.email password: $scope.user.password session.$save() console.log session console.log session.token if not session.token alert 'Invalid Login' else $rootScope.session_token = session.token $state.go 'app.dashboard'
我的会话是一个工厂,看起来像:
angular.module('webapp').factory 'Session',[ '$resource' ($resource) -> $resource 'http://localhost:9500/v1/sessions',id: '@id',save: method: 'POST' transformRequest: (data) -> result = data: JSON.parse JSON.stringify data result.data.types = 'sessions' result = JSON.stringify result result transformResponse: (data) -> result = JSON.parse data a = JSON.parse JSON.stringify result.data console.log a a
请求是罚款。格式化和解析似乎有效。但是,当我记录它的响应显示为资源,而不是对象。即使服务器返回有效的数据,session.token显示为未定义。
如何修改我的transformResponse来解释这个问题?
我想你想要的是用承诺捕获你的资源回应:
session.$save().$promise.then(function (result) { console.log (result); });