我正在构建一个RESTful API,用户可以使用post请求在我的服务器上创建资源,然后通过get请求等来引用它们。我决定的一件事是客户端应该具有哪些ID。我知道有很多方法可以做我想要完成的事情,但我想采用符合行业惯例和最佳设计实践的设计。
我的API应该决定每个新创建的资源的ID(它很可能是数据库分配的资源的主键)吗?或者我应该允许用户将自己的参考号分配给他们的资源吗?
如果我为每个新资源分配一个参考编号,该如何将其返回给客户? API有一些允许批量项目创建的端点,所以我需要在每个响应中列出所有新创建的资源吗?
我之间存在冲突,因为允许用户指定自己的ID显然是一堆蠕虫 - 我需要验证每个ID都没有被删除,因为我加入时会使数据库查询更加怪异引用#和userID而不是外键。另一方面,如果我为每个资源分配ID,它需要客户端必须构建某种类型的响应解析器并强制它们遵循我强加的约定。
答案 0 :(得分:0)
为什么不两个都做?让用户创建引用并创建自己的uid。如果用户必须登录,那么您可以使用那里的reference和userid唯一键。如果不需要,我也会将uid创建回来,客户端可以忽略它。
答案 1 :(得分:0)
在我的应用程序中开发上述两种方法是不切实际的(对我来说),所以我采取了信念的飞跃并允许用户选择自己的ID。我很快发现这个复杂的开发太多,以至于我的开发时间会增加几周,导致更复杂和缓慢的数据库查询。所以,在项目的早期,我回去做了它,所以我只为所有创建的资源分配ID。
现在生活很简单。
我看过的其他流行的API,例如Instagram API,也为某些创建的资源分配ID,如果您有数百万用户可以与其他资源进行交互,这一点尤其重要。