6

我正在做一些研究来帮助我开发一个 REST API,这是我在任何地方都没有深入讨论过的一个话题。

如果我在系统中有用户,使用数字标识符识别用户是否更好

/用户/1

还是使用字符串标识符?

/用户/RSmith

我可以看到每种方法的假设潜在优缺点,字符串标识符更易于阅读,不易被发现(无法增加以查找有效用户),并且不需要在数据库中存储另一个数字 id(我不会想要通过 API 公开数据库 ID)。数字标识符没有内在含义,因此可以保证是不可变的,而对于字符串 id,用户可能想要重命名资源,从而更改资源 URI。

这里是否有 REST 最佳实践,或者最佳方法是否因系统而异?如果是后者,是否有与每种方法相关的其他优点和缺点?

4

2 回答 2

4

如您所知,严格来说,两种方法之间没有优势。是的,字符串标识可能更容易让人们记住,但除此之外,REST 不强制执行“漂亮”的 URL(或 ID),因为大多数时候 URL 是由超链接后面的程序访问的。

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

  1. 您必须根据任何身份验证方法限制对 URL 的访问,或者:
  2. 您必须使用非“公开”的随机/不可猜测的 URL。

那么使用哪一个呢?大多数时候,这并不重要,因为 ID 不是直接访问的。如果您必须确保人们出于某种原因记住他们的 URL,请尝试使它们人性化,但尽量避免更改资源名称并应用其他一些身份验证方式,以便即使猜测的 URL 也无法访问未经授权的位置。

于 2012-06-05T19:47:39.290 回答
1

这样做的唯一优点:/users/RSmith 是它更人性化。从 RESTfull 的角度来看,这并不重要,因为两者都是有效的资源标识符。其他一切都取决于您的系统要求。

于 2012-06-05T19:44:52.607 回答