В моем контроллере весны у меня есть следующее:
@RequestMapping(value = "/users/{id}", method = RequestMethod.DELETE)
@ResponseBody
public void deleteUser(@RequestParam(value = "id") long id) throws Exception {
users.delete(id); // It works on tests
}
Здесь я хочу удалить переданного пользователя в URL (из его идентификатора).
В моем приложении AngularJS у меня есть этот модуль:
angular.module('app')
.factory('DeleteUserService', function($resource) {
return $resource('/users/:id', {id:'@id'}, {
deleteUser: {
method:'DELETE',
headers : {'Content-Type': 'application/json'}
}
});
});
});
Я вызываю модуль с моей страницы администрирования пользователя, следующим образом:
DeleteUserService.deleteUser({id:$scope.id}, function() { //$scope.id = 15
console.log('Correctly deleted!');
});
Проблема в том, что я получаю ошибку 400 Bad Request: DELETE http://localhost:8080/users/15
[HTTP/1.1 400 Required long parameter 'id' is not present 2ms]
Я не понимаю, почему мой контроллер не видит параметр:/
Не могли бы вы помочь мне найти проблему?
Спасибо, не стесняйтесь, если вам нужен дополнительный код.
В этом случае вы должны использовать @PathVatiable вместо @RequestParam
.