Зачем нужен @PathVariable в методе PUT?
Нигде не нашёл информацию стоит ли указывать явно id.
Код:
@RequestMapping(method = RequestMethod.PUT, value="/update/{id}")
@ResponseBody
public User updateUser(@PathVariable long id, @RequestBody User user){
Assert.isTrue(user.getId().equals(id), "User Id must match Url Id");
return svc.updateUser(id, user);
}
Во многих примерах не видел даже того, чтобы был @PathVariable long id - хотя при этом некоторые личности утверждают, что id в пути указывать нужно, не понимаю зачем? Можно ли сразу указывать id в сущности ? Для чего нужен @PathVariable? Я понимаю, что если бы мы пользовались чистым SQL, но здесь же везде JPA?
Ответы (2 шт):
В соответствие с REST логикой маппинга адресов в метод PUT передается параметр ид. объекта, который надо обновить.
Так мы по крайней мере знаем какой объект обновляется, а вот каким объектом это не важно. Так мы можем один объект замещать другим, или по крайней мере не будет обновления всей базы (если ид. объекта отсутствует).
Если тебе не нужен id, то ты можешь его не указывать. Например есть случаи, когда id в ссылке совпадает с id пользователя, в таком случае @PathVariable не обязателен.