首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RESTful API设计(资源连接)

RESTful API设计(资源连接)
EN

Stack Overflow用户
提问于 2011-07-29 15:18:59
回答 1查看 1K关注 0票数 4

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

资源:

  • 用户。
    • Id.
    • Name.
    • Dogs (关系)
      • Id.
      • Private (是或no).

)

  • 犬。
    • Id.
    • Name.

关系:

  • 对很多人。users.

  • 一个用户可以拥有多条狗,
  • 一只狗可以属于多个

  • 这种关系可以是私人的,也可以是公共的。

如何更新关系的“私有”属性?

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

(名称可以为空->,不更新)

  • Dogs:
    • 狗。DogA.
    • Private: Yes.

  • ID

代码语言:javascript
复制
- Dog. 
    - ID : DogB.
    - Private: No. (Updated)

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

  • 犬。
    • Dog.DogB.
    • Private:
    • ID: No.(Updated)

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

EN

回答 1

Stack Overflow用户

发布于 2011-07-29 15:33:32

这样做违反了REST服务是幂等的原则。这意味着您应该能够发送两次相同的操作,而不需要使用第二个操作来更改资源。

我把这个关系作为一个单独的资源来处理: Create/Update将是PUT ../api/users/{userId}/dogs/{dogId}和Private: Yes/No。删除关系将由DELETE ../api/users/{userId}/dogs/{dogId}处理。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6875312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档