На основании того, что говорит этот парень: http://toddfredrich.com/ids-in-rest-api.html
Предположим, он прав в использовании UUID для идентификации ресурсов API. Затем я сталкиваюсь с проблемами, пытаясь реализовать это таким образом:
class FooEntity {
final String id = null; //auto-generated by my backend (mongodb), not shared
final UUID uid = UUID.randomUUID(); //the resource id
}
(Между клиентом и сервером отправляются и принимаются DTO, а не объекты базы данных.)
Проблема в том, что id
это бесполезно, так как я больше им не пользуюсь. Клиент делает запросы с uid
тем, почему я пытаюсь обрабатывать 2 идентификатора? Тогда мы вернемся к той же проблеме начала. Если я устанавливаю UUID в качестве первичного ключа ( _id
), то я предоставляю публичный идентификатор бэкенда.
Кроме того, есть тема эффективности. Я читал, что индексирование по ObjectId намного более эффективно, чем UUID.