Допустим, я хочу создать REST-сервис для создания заметок, который выглядит примерно так:
GET /notes/ // gives me all notes
GET /notes/{id} // gives the note identified by {id}
DELETE /notes/{id} // delete note
PUT /notes/{id} // creates a new note if there is no note identified by {id}
// otherwise the existing note is updated
Поскольку я хочу, чтобы мой сервис был независимым, я использую PUT для создания и обновления своих заметок, что подразумевает, что идентификаторы новых заметок устанавливаются/генерируются Клиентом.
Я думал об использовании GUID/UUID, но они довольно длинные и затруднят запоминание URL-адресов. Также с точки зрения базы данных такие длинные строковые идентификаторы могут создавать проблемы с точки зрения производительности при использовании в качестве первичного ключа в больших таблицах.
Знаете ли вы хорошую стратегию генерации идентификаторов, которая генерирует короткие идентификаторы и, конечно же, избегает коллизий?