我正在做一些研究来帮助我开发REST API,这是我在任何地方都没有深入讨论的一个主题。
如果系统中有用户,使用数字标识符识别用户是否更好
/用户/ 1
或使用字符串标识符?
/用户/ RSmith
我可以看到每种方法的假设潜在优缺点,字符串标识符更易于人类阅读,更不易被发现(无法增加以查找有效用户),并且不需要在数据库中存储另一个数字ID(I不希望通过API公开数据库ID)。数字标识符没有固有的含义,因此可以保证是不可变的,而使用字符串id,用户可能希望重命名资源,从而更改资源URI。
这里是否有REST最佳实践,或者最佳方法是否因系统而异?如果是后者,是否还有与每种方法相关的额外利弊?
答案 0 :(得分:4)
如您所知,严格来说,两种方法之间没有任何优势。是的,字符串标识对于人们来说可能更容易记住,但除此之外,REST并不强制执行“漂亮”#34; URL(或ID),因为大多数时间URL都是由超链接后的程序访问的。
因此,人类友好的URL应仅用于引导人类可能记住的资源。此外,ID猜测应该不是问题,因为:
那么使用哪一个?大多数情况下,无关紧要,因为不能直接访问ID。如果您必须确保人们出于某种原因记住他们的网址,请尝试将其设置为人性化,但请尽量避免更改资源名称并应用其他一些身份验证方法,以便即使猜到的网址也无法访问未经授权的网址地方。
答案 1 :(得分:1)
唯一的优点是:/ users / RSmith是更加人性化的。从RESTfull的角度来看,它无关紧要,因为它们都是有效的资源标识符。其他一切都取决于您的系统要求。