RESTful API标识符的最佳实践

时间:2018-08-29 14:49:09

标签: identifier

到目前为止,我看到了这些选项(伪代码):

A。非常简单的MD5哈希值:

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

=> 4c0dc8d3fdffacb65d04911291aac4cf

B。 UUID:

$identifier = uuid()

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

但是哪个UUID version最有意义?我倾向于v4。

C。我想为这些ID加上前缀,所以我立即知道例如,哪种对象是什么意思。在日志或支持请求中。

$identifier = 'trx_' + uuid()

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

但这是一个不错的风格吗?我可以不带前缀存储,但可以带前缀公开,并允许带或不带请求。

什么是最好的果仁糖?

1 个答案:

答案 0 :(得分:1)

这并不重要。如果我使用类似UUID的标识符,我确实会稍微喜欢UUID格式,因为它会向API用户发出“这是UUID”的信号。

对于用户来说,可能会有一些小的好处,因为如果看到UUID,我知道我可以将它作为128位整数而不是字符串存储在数据库中。

需要注意的一件事是安全性。您的第一个示例使用单词secret,该单词可能告诉我,这些ID不可猜测。 UUID的 是可猜测的,并且不是加密安全的。

话虽这么说,MD5也不安全,所以在这种情况下,您的两个示例都是错误的。

相关问题