Ao projetar uma API, deparamos com a questão de saber se uma carga útil de PUT deve conter o ID do recurso que está sendo atualizado.
É o que temos atualmente:
PUT /users/123 Payload: {name: "Adrian"}
Nosso código de rota extrai o ID do URI e continua com a atualização.
Os primeiros usuários de nossa API estão questionando por que não permitimos o ID na carga útil:
PUT /users/123 Payload: {id: 123, name: "Adrian"}
O motivo de não permitirmos isso é porque o ID é duplicado, na carga útil e no URI.
Pensando nisso um pouco mais, estamos acoplando o recurso ao URI.
Se o URI não tiver o ID, a carga útil precisará ser alterada:
PUT /no/id/here Payload: {name: "Adrian"} < What user???
Há alguma razão para não?
/users
(não é necessário adicionar 'novo').