REST api 中的子集合

Ali*_*dov 1 api collections rest resources

一个资源可以有多少个子集合?

想象一下我们有这个模型:账户 -> 帖子 -> 评论

帐户-帖子对的一切都很清楚。/accounts/{account_id}/posts/{post_id}

但是评论呢?指向单个评论的正确方法是什么?

/posts/{post_id}/comments/{comment_id}

或者

/accounts/{account_id}/posts/{post_id}/comments/{comment_id}

或(直接指向)

评论/{comment_id}

Nat*_*ate 5

一般的经验法则是只深入一层子资源。一个帐户可能有很多像你展示的帖子,一个帖子可能有很多评论,但由于帖子 id 是唯一的,因此在尝试获取帖子的评论时,包括帐户 id 有点多余。

/accounts/:account_id/posts

/posts/:post_id/comments

Ruby On Rails 也在他们的文档中列出了这个(只是为了引用)。https://guides.rubyonrails.org/routing.html#limits-to-nesting

此外,如果您已经拥有资源的 id,则无需嵌套它。由于没有完成工作的路线是首选。

/评论/:ID