【发布时间】:2018-08-29 14:49:09
【问题描述】:
到目前为止,我看到了这些选项(伪代码):
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
但这是一种不错的风格吗?我可以不使用前缀进行存储,但可以使用前缀公开并允许有或没有前缀的请求。
你最好的做法是什么?
【问题讨论】:
-
我不太确定您要在这里解决什么问题。 REST 客户端通常不应该关心您的资源标识符,因为它只会调用作为向某些 API 端点发出的请求的响应而收到的 URI。根据定义,URI 是唯一的。因此,支持此功能的资源标识符肯定可以安全使用。如何生成此类标识符完全取决于您,或多或少取决于实施决定。在这里获得 IMO 没有任何好处
-
首先我想避免双重 ID,而不需要在每次新插入之前检查现有 ID。其次,最好有一个关于 ID 用于何种对象的指标(不太重要)。
标签: identifier