Лучшие практики для идентификаторов RESTful API - PullRequest
0 голосов
/ 29 августа 2018

Пока я вижу эти опции (псевдокод):

A. Довольно простой хеш MD5:

$identifier = MD5(object.id + created_at + app_secret)

=> 4c0dc8d3fdffacb65d04911291aac4cf

B. UUID:

$identifier = uuid()

=> fbcf6520-ab93-11e8-86b4-080027b55b5e

Но какая версия UUID имеет больше смысла? Я склонен к v4.

C. Мне бы хотелось иметь префикс для этих идентификаторов, чтобы я сразу понял, что это за объект, например. в журналах или запросе поддержки.

$identifier = 'trx_' + uuid()

=> trx_fbcf6520-ab93-11e8-86b4-080027b55b5e

Но это хороший стиль? Я мог бы хранить без префикса, но выставлять с префиксом и разрешать запросы с или без него.

Какая твоя лучшая практика?

1 Ответ

0 голосов
/ 29 августа 2018

Это не должно иметь большого значения. Если бы я использовал идентификаторы, подобные UUID, я думаю, что я бы немного предпочел формат UUID, потому что он сигнализирует пользователю API «Это UUID».

Возможно, у пользователя есть небольшие преимущества, потому что, если я вижу UUID, я знаю, что могу сохранить его в базе данных как 128-битное целое число вместо строки.

Однако стоит обратить внимание на безопасность. Ваш первый пример использует слово secret, которое может сказать мне, что эти идентификаторы не должны быть угаданными. UUID являются предполагаемыми и не криптографически безопасными.

При этом, MD5 тоже небезопасен, так что в этом случае оба ваших примера плохие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...