Digamos que eu queira ter um recurso RESTful para pessoas, onde o cliente possa atribuir ID.
Uma pessoa se parece com isto: {"id": <UUID>, "name": "Jimmy"}
Agora, como o cliente deve salvá-lo (ou "COLOCAR")?
PUT /person/UUID {"id": <UUID>, "name": "Jimmy"}
- agora temos essa duplicação desagradável que temos que verificar o tempo todo: O ID no corpo corresponde ao do caminho?- Representação assimétrica:
PUT /person/UUID {"name": "Jimmy"}
GET /person/UUID
retorna{"id": <UUID>, "name": "Jimmy"}
- Nenhum ID no corpo - ID apenas no local:
PUT /person/UUID {"name": "Jimmy"}
GET /person/UUID
retorna{"name": "Jimmy"}
- Nada
POST
parece uma boa ideia, já que o ID é gerado pelo cliente.
Quais são os padrões comuns e maneiras de resolvê-lo? IDs apenas na localização parece a maneira mais dogmaticamente correta, mas também torna a implementação prática mais difícil.