「笔记004」Go课程工程实践作业

2024 年 11 月 27 日 星期三(已编辑)
7
这篇文章上次修改于 2024 年 11 月 28 日 星期四,可能部分内容已经不适用,如有疑问可询问作者。

「笔记004」Go课程工程实践作业

1. 项目简介

该项目是一个基于 Golang 的社区论坛,允许用户创建话题 (Topic),并对话题进行评论 (Post)。项目要求包含话题的增删改查功能,并提供话题下的评论管理功能。用户需要注册和登录以使用所有功能,并且每个评论需要归属到对应的话题下。

2. 技术栈

  • 后端:Golang
  • 数据库:MySQL
  • 开发框架:Gin(或其它 Golang 框架)
  • ORM:GORM
  • 依赖管理:Go Modules

3. 数据库设计

根据需求,有以下三张表:usertopicpost

3.1 用户表 user

字段名类型说明
idINT主键,自增
nameVARCHAR(50)用户名
avatarVARCHAR(255)用户头像 URL
levelINT用户等级
create_timeDATETIME创建时间
modify_timeDATETIME修改时间

3.2 话题表 topic

字段名类型说明
idINT主键,自增
titleVARCHAR(255)话题标题
contentTEXT话题内容
create_timeDATETIME创建时间
useridINT创建话题的用户 ID
digg_countINT点赞数(可选)

说明userid 是外键,关联 user 表的 id 字段。

3.3 评论表 post

字段名类型说明
idINT主键,自增
topic_idINT关联的 topic 表 ID
contentTEXT评论内容
create_timeDATETIME创建时间
useridINT评论的用户 ID

说明topic_iduserid 是外键,分别关联 topic 表的 id 字段和 user 表的 id 字段。

4. API 设计

4.1 用户相关接口

4.1.1 用户注册

  • URL/api/user/register
  • 方法:POST
  • 请求体json { "name": "string", "avatar": "string" }
  • 响应json { "id": "int", "message": "User registered successfully." }

4.1.2 用户登录

  • URL/api/user/login
  • 方法:POST
  • 请求体json { "name": "string" }
  • 响应json { "id": "int", "message": "User logged in successfully." }

4.2 话题 (Topic) 相关接口

4.2.1 创建话题

  • URL/api/topic
  • 方法:POST
  • 请求体json { "title": "string", "content": "string", "userid": "int" }
  • 响应json { "id": "int", "message": "Topic created successfully." }

4.2.2 获取所有话题

  • URL/api/topics
  • 方法:GET
  • 响应json [ { "id": "int", "title": "string", "content": "string", "create_time": "datetime", "userid": "int", "digg_count": "int" }, ... ]

4.2.3 删除话题

  • URL/api/topic/{id}
  • 方法:DELETE
  • 响应json { "message": "Topic deleted successfully." }

4.3 评论 (Post) 相关接口

4.3.1 创建评论

  • URL/api/post
  • 方法:POST
  • 请求体json { "topic_id": "int", "content": "string", "userid": "int" }
  • 响应json { "id": "int", "message": "Post created successfully." }

4.3.2 获取指定话题的所有评论

  • URL/api/topic/{topic_id}/posts
  • 方法:GET
  • 响应json [ { "id": "int", "content": "string", "create_time": "datetime", "userid": "int" }, ... ]

4.3.3 删除评论

  • URL/api/post/{id}
  • 方法:DELETE
  • 响应json { "message": "Post deleted successfully." }

5. 开发步骤

  1. 初始化项目

    • 创建 Golang 项目目录,使用 Go Modules 管理依赖。
    • 安装 Gin、GORM 和 MySQL 驱动等依赖。
  2. 设置数据库连接

    • config 文件中配置 MySQL 连接参数。
    • 使用 GORM 初始化数据库连接。
  3. 定义数据模型

    • 创建 user.gotopic.gopost.go 文件,定义对应的模型和表结构。
  4. 实现逻辑

    • 在每个模型文件中,添加数据访问方法(如 CreateTopicDeleteTopicGetTopics 等)。
    • handler 文件夹中,为每个资源(用户、话题、评论)实现业务逻辑。
  5. 设置路由

    • 在主文件中(main.go),使用 Gin 定义 API 路由,关联控制器。
    • 启动服务器,监听请求。
  6. 测试

    • 使用 Postman 测试接口,确保各功能正常。
    • 编写单元测试和集成测试,覆盖业务逻辑和数据访问层。

6. 可以做出的扩展

  1. 用户认证和授权:可以使用 JWT 实现用户的认证,确保只有登录用户可以进行增删操作。
  2. 点赞和回复功能:在话题或评论中增加点赞数、回复功能,以增强社区互动。
  3. 分页和排序:对于获取话题和评论的接口,加入分页和排序功能,提升用户体验。

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...