rest - 为 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
解决方案
下面的 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}
希望它能解决你的问题。
推荐阅读
- r - 您如何在 R 中的箱线图上放置阴影?
- javascript - 将多个电话号码添加到单个 gtag 代码段以进行 AdWords 转化跟踪
- output-formatting - 输出以字符串格式返回,而不是 int。例如:函数返回“1563.7383”而不是 1563.7383
- tensorflow - 用于对象检测 API tensorflow 的归一化标签框
- html - 如何使选项标签大于输入
- python - python字符串中的错误
- c++ - 进程结束时如何保持 QProcess 执行的命令?
- javascript - Moment.js isBefore() 在检查是否在中午 12 点/中午之前不起作用
- python - 如何访问yaml文件中另一个变量中的变量?
- android - Android:找不到 com.android.tools.build:gradle:3.0.1