FriendlyId 库将给定的 UUID(36 个字符)转换为 URL 友好的 ID(“FriendlyId”),它基于 Base62(最多 22 个字符),如下例所示
UUID Friendly ID
c3587ec5-0976-497f-8374-61e0c2ea3da5 -> 5wbwf6yUxVBcr48AMbz9cb
| |
36 characters 22 characters or less
此外,该库还允许
通用唯一 ID (UUID) 提供了一个非顺序且唯一的标识符,它可以独立于源数据库生成。因此,不可能猜测前一个或后一个标识符。这很棒,但是,为了达到这种安全级别,UUID 很长(128 位),而且看起来很丑陋(36 个字母数字字符,包括四个连字符,添加连字符是为了更容易阅读 UUID),例如:123e4567-e89b-12d3-a456-426655440000
。
这样的格式
(Swift)FriendlyId 库通过使用 Base62 和 [0-9A-Za-z] 范围内的字母数字字符将给定的 UUID 转换为 FriendlyId 来解决这些问题,FriendlyId 最多包含 22 个字符(但实际上通常包含更少的字符)。
Swift 包包含一个命令行工具,用于生成以及转换为和从 UUID 格式转换。
生成新 ID(来自随机 v4 UUID)
$ friendly-id
将 UUID 转换为 “FriendlyId”
$ friendly-id 921bcf08-1279-4e0a-9e0d-e5a1103c5def
将 FriendlyId 转换为 UUID
$ friendly-id 4RhaTeTKMOdHxagaj2XAcR
FriendlyId 也可以使用 Swift Package Manager 集成到您的 Swift 项目中。
Swift Package Manager 依赖
.package(url: "https://github.com/kdubb/SwiftFriendlyId.git", .upToNextMinor(from: "1.0.0")),
生成 FriendlyId
let id = Id(algorithm: .random)
将 UUID 转换为 FriendlyId
let id = Id(uuid: UUID(uuidString: "921bcf08-1279-4e0a-9e0d-e5a1103c5def")!)
将 FriendlyId(或 UUID)格式的字符串转换为 UUID
let id = Id(string: "4RhaTeTKMOdHxagaj2XAcR")!
let id = Id(string: "921bcf08-1279-4e0a-9e0d-e5a1103c5def")!