gpt4 book ai didi

php - RESTful API设计(资源的连接)

转载 作者:可可西里 更新时间:2023-10-31 23:43:36 26 4
gpt4 key购买 nike

我正在为我的 Web 项目 (PHP) 设计一个 API,但在为资源与属性之间的关系建模时遇到了麻烦。我想获得一些关于如何进行的意见。

资源:

  • 用户。
    • 身份证。
    • 姓名。
    • 狗(关系)。
      • 身份证。
      • 私有(private)(是或否)。
  • 狗。
    • 身份证。
    • 姓名。

关系:

  • 多对多。
    • 一个用户可以养很多只狗。
    • 一只狗可以属于多个用户。
  • 这种关系可以是私有(private)的也可以是公开的。

您想如何更新关系的“私有(private)”属性?

现在您必须向 .../api/users/{userId} 发送 PUT 请求,包括该用户的所有关系,包括更新的属性:

(名称可以为 NULL -> 无更新)

  • 狗:
    • 狗。
      • ID : DogA.
      • 私有(private):是。
    • 狗。
      • ID:DogB。
      • 私有(private):否。(更新)

我对这种方法感到不舒服,因为我认为只需要发送已更改的信息进行更新。因此,我现在的想法是添加对仅将更新后的关系发送到 .../api/users/{userId} 的支持:

  • 狗。
    • 狗。
      • ID:DogB。
      • 私有(private):否。(更新)

在我开始工作之前,我会非常感谢一些反馈。也许还有其他更好的方法来处理资源之间的关系??

最佳答案

这样做会违反 REST 服务是幂等的原则。这意味着您应该能够在不更改资源的情况下发送相同的操作两次。

我会将关系视为单独的资源:创建/更新将是 PUT ../api/users/{userId}/dogs/{dogId} with Private: Yes/No.删除关系将由 DELETE ../api/users/{userId}/dogs/{dogId} 处理。

关于php - RESTful API设计(资源的连接),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6875312/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com