菜单

评论和标签端点

相关源文件

本文档详细介绍了 RealWorld API 规范中的评论和标签端点。这些端点允许用户与文章评论互动并检索整个平台中使用的标签。有关文章管理的信息,请参阅文章端点

概述

评论和标签端点是 RealWorld 平台的重要组成部分,通过文章评论实现社交互动,并通过标签组织内容。这些端点遵循 RESTful 原则并在 OpenAPI 规范中定义。

来源: api/openapi.yml291-364 api/openapi.yml410-421

评论端点

端点摘要

评论与特定文章关联,并由用户撰写。API 提供列出、创建和删除评论的端点。

端点方法目的需要认证
/articles/{slug}/commentsGET获取文章评论可选
/articles/{slug}/commentsPOST为文章创建评论必填
/articles/{slug}/comments/{id}DELETE删除文章评论必填

来源: api/openapi.yml291-364

获取文章评论

检索由其 slug 标识的特定文章的所有评论。

端点: GET /articles/{slug}/comments

参数:

  • slug(路径参数):要获取评论的文章的 slug

示例响应:

来源: api/openapi.yml291-310 apps/documentation/src/content/docs/specifications/backend/api-response-format.md125-142

为文章创建评论

为特定文章创建新评论。

端点: POST /articles/{slug}/comments

参数:

  • slug(路径参数):要创建评论的文章的 slug

请求体:

示例响应:

来源: api/openapi.yml311-335 apps/documentation/src/content/docs/specifications/backend/api-response-format.md106-123

删除文章评论

从文章中删除特定评论。

端点: DELETE /articles/{slug}/comments/{id}

参数:

  • slug(路径参数):包含评论的文章的 slug
  • id(路径参数):要删除的评论的 ID

响应:成功时返回 200 OK,正文为空

来源: api/openapi.yml336-364

标签端点

端点摘要

标签用于对文章进行分类。API 提供一个端点来检索系统中使用的所有标签。

端点方法目的需要认证
/tagsGET获取所有标签

来源: api/openapi.yml410-421

获取所有标签

检索平台所有文章中使用的所有标签列表。

端点: GET /tags

示例响应:

来源: api/openapi.yml410-421 apps/documentation/src/content/docs/specifications/backend/api-response-format.md144-152

数据模型

评论模型

来源: api/openapi.yml561-581 apps/api/prisma/migrations/20241009081140_init/migration.sql15-24

标签模型

来源: api/openapi.yml604-616 apps/api/prisma/migrations/20241009081140_init/migration.sql27-30 apps/api/prisma/migrations/20241009081140_init/migration.sql44-49

请求-响应流程

来源: api/openapi.yml291-364 api/openapi.yml410-421

数据库 Schema

评论和标签模型在数据库模式中使用 Prisma 定义。以下是表及其关系的详细视图

评论表

CREATE TABLE "Comment" (
    "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    "updatedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    "body" TEXT NOT NULL,
    "articleId" INTEGER NOT NULL,
    "authorId" INTEGER NOT NULL,
    CONSTRAINT "Comment_articleId_fkey" FOREIGN KEY ("articleId") REFERENCES "Article" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
    CONSTRAINT "Comment_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE
);

标签表

CREATE TABLE "Tag" (
    "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    "name" TEXT NOT NULL
);

CREATE UNIQUE INDEX "Tag_name_key" ON "Tag"("name");

文章到标签的连接表

CREATE TABLE "_ArticleToTag" (
    "A" INTEGER NOT NULL,
    "B" INTEGER NOT NULL,
    CONSTRAINT "_ArticleToTag_A_fkey" FOREIGN KEY ("A") REFERENCES "Article" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
    CONSTRAINT "_ArticleToTag_B_fkey" FOREIGN KEY ("B") REFERENCES "Tag" ("id") ON DELETE CASCADE ON UPDATE CASCADE
);

CREATE UNIQUE INDEX "_ArticleToTag_AB_unique" ON "_ArticleToTag"("A", "B");
CREATE INDEX "_ArticleToTag_B_index" ON "_ArticleToTag"("B");

来源: apps/api/prisma/migrations/20241009081140_init/migration.sql15-24 apps/api/prisma/migrations/20241009081140_init/migration.sql27-30 apps/api/prisma/migrations/20241009081140_init/migration.sql44-49 apps/api/prisma/migrations/20241009081140_init/migration.sql70-83

API 实现

评论和标签端点在 OpenAPI 规范中定义,并在 RealWorld API 中实现。创建和删除评论需要认证,而读取评论和标签无需认证。

身份验证要求

来源: api/openapi.yml291-364 api/openapi.yml410-421 api/openapi.yml826-836

测试

评论和标签端点可以使用 RealWorld API 仓库中提供的 Postman collection 进行测试。有关如何运行这些测试的更多详细信息,请参阅API 测试页面。

来源: api/Conduit.postman_collection.json api/README.md1-11