AngularJS:PUT使用URL发送数据,但不作为JSON数据发送

这是我的 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是

http://localhost:5000/users/bd675d42-aa9b-11e2-9d27-b88d1205c810

和数据一样

{

day_in_month: 5

}

我的端点希望数据是请求的一部分,以便可以将其解析为 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}

以上是 AngularJS:PUT使用URL发送数据,但不作为JSON数据发送 的全部内容, 来源链接: utcz.com/qa/419944.html

回到顶部