Angular resource custom URL is using query strings

2020-07-09 07:58发布

I've written a custom method on an Angular resource in my application for activating a user. The API endpoint is /users/activate and an activation code must be PUTed to this endpoint. This is what my resource looks like:

app.factory('User', ['$resource',
    function($resource){
        return $resource('http://api.site.dev/users/:id', {id: '@id'}, {
            activate: {method:'PUT', params:{code: '@code'}, url: 'http://api.site.dev/users/activate'}
        });
    }]);

and I'm using it in my controller like so:

User.activate({code: $routeParams.code});

As you can see from the network log on Chrome, the activation code is being sent in the query string and request body:

enter image description here

How can I change the resource to just pass the activation code in the request body and not in the query string?

1条回答
地球回转人心会变
2楼-- · 2020-07-09 08:28

Just remove params from the action declaration:

activate: {method:'PUT', url: 'http://api.site.dev/users/activate'}
查看更多
登录 后发表回答