这是我在应用程序中创建资源的经典 RESTful 方式:
# This creates user. Client is responsible to create UUID, which is simple
PUT /users/CLIENT_GENERATED_UUID
# Access user by uuid
GET /users/UUID
当我们触及数据存储性能领域时,会发现随机生成的 UUID 不能很好地服务于数据局部性等许多原因。
服务器生成的 ID 对性能有好处,但它们并不真正匹配 REST:
- 如果使用 POST 创建资源,就会失去幂等性:REST 隐含 PUT、GET、DELETE 幂等性,而 POST 则没有。
- 在执行 PUT 之前,您可以要求服务器为您提供一个不错的 ID。尽管它感觉很重且不明显,但它也不能防止使用自己的随机 id 而不是要求它的虚拟客户端。
有人可以在这个架构问题上给我一个提示吗?