如何决定在RESTful URL中使用字符串与整数标识符。例如,我看到Github API在某些情况下使用字符串,例如
GET https://api.github.com/repos/nareshbhatia/git-explorer
=> get a repository whose id is "git-explorer"
而其他人的整数
GET https://api.github.com/repos/octocat/Hello-World/issues/1347
=> get an issue whose id is 1347
据我所知,通过名称识别存储库和按编号查询问题更为自然,但从实现的角度来看,字符串标识符存在一些问题。存储库表的主键是否应该是名称?但是字符串通常是主键的不良选择。那么整数代理键怎么样,并使名称成为一个独特的列。但这意味着每当我有一个存储库(一个整数)的引用,我需要为它构建一个URL,我被迫加入存储库表 - 只是为了得到它的名字。
为了澄清,假设我正在为一个问题创建JSON,并且我需要包含一个指向存储库的链接,我需要连接到存储库表以创建类似/repos/nareshbhatia/git-explorer
的链接,而不是一个简单的链接只是一个整数引用,如/repos/nareshbhatia/10
答案 0 :(得分:0)
我不确定我是否同意字符串是PK的错误选择。当然,如果你使用自然键,你可能会使用字符串。许多人更喜欢整数,因为它们更紧凑并且它们提高了索引的性能,但性能不应该是你唯一的考虑因素,并且自然键有其优点。足够的数据库。
当你开始讨论URI时,对于较短的URL确实没有明显的性能优势,因此整数没有性能作为字符串的优势。字符串在URI中也比SEO中的整数具有SEO优势。这些注意事项可能会导致您使用整数主键设计数据库,但在restful端点中使用字符串作为URI。