Зачем нужен @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 шт):

Автор решения: Roman C

В соответствие с REST логикой маппинга адресов в метод PUT передается параметр ид. объекта, который надо обновить.

Так мы по крайней мере знаем какой объект обновляется, а вот каким объектом это не важно. Так мы можем один объект замещать другим, или по крайней мере не будет обновления всей базы (если ид. объекта отсутствует).

→ Ссылка
Автор решения: Wonka

Если тебе не нужен id, то ты можешь его не указывать. Например есть случаи, когда id в ссылке совпадает с id пользователя, в таком случае @PathVariable не обязателен.

→ Ссылка