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:
How can I change the resource to just pass the activation code in the request body and not in the query string?
Just remove params
from the action declaration:
activate: {method:'PUT', url: 'http://api.site.dev/users/activate'}