John Dorean
John Dorean

Reputation: 3874

Angular resource custom URL is using query strings and POST parameters

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?

Upvotes: 7

Views: 7018

Answers (1)

wachme
wachme

Reputation: 2337

Just remove params from the action declaration:

activate: {method:'PUT', url: 'http://api.site.dev/users/activate'}

Upvotes: 10

Related Questions