REST数字或字符串资源标识符?(REST numeric or string resource i

2019-06-25 05:37发布

我做了一些研究,以帮助我制定一个REST API,这是一个话题我没有看到任何地方深入讨论。

如果我的系统中有一个用户,是它更好地使用数字标识符标识用户

/用户/ 1

或者使用字符串标识符?

/用户/ RSmith

我可以看到假想的潜在利弊,每种方法,串标识符是更可读,发现少(不能递增找到有效的用户),并且不需要在数据库中存储的另一个数字ID(我不会希望通过API来暴露数据库ID)。 数字标识符没有内在的意义,原因在于,可以保证是不变的,而用字符串ID的用户可能要重命名的资源,从而改变资源URI。

是否有一个REST最佳实践这里还是没有最好的方式上有所不同,以系统的系统? 如果是后者,是否有与每个方法相关联的任何附加的优点和缺点?

Answer 1:

如你所知,严格来说,有两种方法之间没有任何优势。 是的,字符串标识可能是更容易让人记住,但除此之外,REST并不强制“漂亮”的网址(或ID),因为大部分时间的URL由以下链接程序访问。

因此,人类友好的URL应该只用于可能被人记住引导资源。 此外,ID猜测不应该是一个问题,因为无论是:

  1. 你必须限制访问基于任何身份验证方法,或网址:
  2. 你必须使用不属于“公共”随机/不可猜测的URL。

因此,要使用哪一个? 在大多数情况下,它并不重要,因为ID不直接访问。 如果你必须确保人们记住他们的网址,出于某种原因,试着做他们人性化的,但尽量避免资源名称变更和应用认证的其它一些手段,使即使猜到网址没有获得访问未经授权的地方。



Answer 2:

这个唯一的优点:/用户/ RSmith是,它更加人性化友好。 从REST类型的角度来看,这并不重要,因为两者都是有效的资源标识符。 一切取决于你的系统requrements。



文章来源: REST numeric or string resource identifiers?