Com base no que esse cara diz: http://toddfredrich.com/ids-in-rest-api.html
Vamos supor que ele esteja certo ao usar o UUID para identificar os recursos da API. Então eu me deparo com problemas tentando implementá-lo dessa maneira, isto é:
class FooEntity {
final String id = null; //auto-generated by my backend (mongodb), not shared
final UUID uid = UUID.randomUUID(); //the resource id
}
(Entre cliente e servidor, são enviados e recebidos DTOs, não entidades de banco de dados.)
O problema agora é que id
não é útil, pois não estou mais usando. O cliente faz as solicitações, uid
então por que eu me preocupo em lidar com 2 IDs? Então voltamos à mesma questão do começo. Se eu definir UUID como a chave primária ( _id
), exponha o ID do back-end ao público.
Além disso, há o tópico sobre eficiência. Eu li que a indexação por ObjectId é muito mais eficiente que o UUID.