Na podstawie tego, co mówi ten facet: http://toddfredrich.com/ids-in-rest-api.html
Załóżmy, że ma rację, używając identyfikatora UUID do identyfikacji zasobów interfejsu API. Potem napotykam kłopoty, próbując to zaimplementować w następujący sposób:
class FooEntity {
final String id = null; //auto-generated by my backend (mongodb), not shared
final UUID uid = UUID.randomUUID(); //the resource id
}
(Między klientem a serwerem wysyłane i odbierane są DTO, a nie jednostki bazy danych.)
Problem polega na tym, że id
nie jest to przydatne, ponieważ już go nie używam. Klient wysyła żądania, uid
więc dlaczego mam kłopot z obsługą 2 identyfikatorów? Następnie wracamy do tego samego wydania na początku. Jeśli ustawię UUID jako klucz podstawowy ( _id
), wówczas ujawniam identyfikator zaplecza publicznie.
Oprócz tego jest temat wydajności. Czytałem, że indeksowanie według ObjectId jest znacznie bardziej wydajne niż UUID.