首页 > 解决方案 > 为 REST API 设计 URI 的最佳方式

问题描述

我正在设计一个与 Facebook 中的帖子和评论功能相似的 REST API。

URI 看起来像:

/posts/{post-id}/comments/{comment-id}

为了获得所有评论,我使用集合 URI 命名标准。例如:

/posts/{post-id}/comments

但是当我需要对所有帖子发表评论时,我遇到了困难。记住我只想将此设计用于帖子和评论的最佳方式是什么?

编辑

我必须在这里提到,我使用的资源与帖子和评论有点不同,在我的设计中我将不得不使用帖子并且不能将评论作为完全不同的实体。很抱歉对于这个误会。

话虽如此,是否建议以以下任何一种方式设计 URI:

/posts//comments

/posts/"any-string"/comments

标签: restapiuriurl-design

解决方案


下面的 URI 应该服务于目的。

/注释

对于上面给出的示例,让我们了解实体和 URI 的关系:

帖子评论本身就是两个实体。

当您只需要帖子并且只需要传递 post_id 时

要检索帖子:

/posts

要检索特定帖子:

/posts/{post_id}

当您只需要评论并且只需要传递comment_id 时

要检索所有评论:

/comments

要检索特定评论:

/comments/{comment_id}

当您需要通过同时传递 post_id 和 comment_id 对给定帖子发表评论时

要检索帖子的评论:

/posts/{post_id}/comments

要检索给定帖子的特定评论:

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

希望它能解决你的问题。


推荐阅读