如何使用服务器定义的ID构建REST API?

 mobiledu2502890213 发布于 2022-12-04 03:08

这是在应用程序中创建资源的经典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 idempotency,而POST则不然.

    在进行PUT之前,您可以要求服务器为您提供一个很好的ID.尽管它感觉非常沉重且不明显,但它也不能保护使用自己的随机ID而不是要求它的虚拟客户端.

有人能在这个架构问题上给我一个暗示吗?

1 个回答
  • 使用资源创建并不意味着是幂等的.如果服务器分配ID,则必须为要创建的每个资源选择不同的ID.这样的操作不能是幂等的,重复它必须创建不同的资源.

    像对象一样使用POSTcollecton资源

    POST /users
    

    如果服务器分配ID,则完全是RESTful.可以重复此请求,它将创建不同的资源.

    PUT如果问题域允许客户端控制ID,则使用像创建资源这样的幂等操作才有意义.我认为对大多数域名来说并非如此.

    我的建议:使用POST并让服务器分配ID.

    2022-12-11 02:07 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有