这是我的 UserService
UserService
angular.module('userServices', ['ngResource']).factory('User', function($resource) { return $resource('/users/:userId', // todo: default user for now, change it {userId: 'bd675d42-aa9b-11e2-9d27-b88d1205c810'}, {update: {method: 'PUT', params:{profile: '@profile'}, isArray: false}} ); });
在我的控制器中
$scope.save = function() { $scope.user.$update({profile: $scope.profile}); }
但是当我在Chrome中看到“网络”标签时,
Request URL:http://localhost:5000/users/bd675d42-aa9b-11e2-9d27-b88d1205c810?profile=%5Bobject+Object%5D Request Method:PUT Status Code:200 OK
如何将其作为data有效载荷发送?所以那URL是
data
http://localhost:5000/users/bd675d42-aa9b-11e2-9d27-b88d1205c810
和数据一样
{ day_in_month: 5 }
我的端点希望数据是请求的一部分,以便可以将其解析为 request.json
request.json
我正在共享我的代码库中的代码,该代码在按照@lucuma的建议进行更改后有效
The UserService looks like
angular.module('userServices', ['ngResource']).factory('User', function($resource) { return $resource('/users/:userId', // todo: default user for now, change it {userId: 'bd675d42-aa9b-11e2-9d27-b88d1205c810'}, {update: {method: 'PUT', data:{}, isArray: false}} // add data instead of params ); });
and ProfileController looks like
function ProfileController($scope, User) { $scope.profile = {}; $scope.user = User.get(); $scope.save = function () { // I was using $scope.user.$update before which was wrong, use User.update() User.update($scope.profile, function (data) { $scope.user = data; // since backend send the updated user back }); }
进行这些更改后,我在Chrome中的“网络”标签符合预期
Request URL:http://localhost:5000/users/bd675d42-aa9b-11e2-9d27-b88d1205c810 Request Method:PUT Status Code:200 OK Request Payload: {"day_in_month":25}