Go语言入门工程实践--社区话题页面 | 青训营笔记

133 阅读2分钟

社区话题页面 | 青训营笔记

1.项目需求

  • 展示话题(标题,文字描述)和回帖列表
  • 暂不考虑前端页面实现,仅仅实现一个本地web服务
  • 话题和回帖数据用文件存储

2.分析设计

2.1 模型设计

考虑到正常的社区功能,至少应该有三个模型:用户话题帖子

具体如下:

image.png

image.png

image.png

2.2功能分析

  • 首先应当要有基础的添加功能,即注册用户发起话题回复发帖,便于进行测试
  • 然后由于要从文件读取数据,则应当有文件读取写入功能。为防止数据丢失,应该在成功添加后,及时写入到文件存储。
  • 最后就是获取话题页面的功能,先要展示话题与发起者信息,然后展示所有回帖和回帖人信息

2.3项目分层

image.png

结合以上分析,并参照PPT和github上的示例代码,我将本次项目分为如下几层:

image.png

API介绍可以看此处链接:Go语言:RESTful API 服务,急速入门! - 掘金 (juejin.cn)

3.功能实现

3.1 添加功能

(1)注册用户

Router/Router.go

image.png

Cotroller/Register.go

image.png

Service/Register.go

image.png

Repository/User.go

image.png

Gin解析数据的方法可以戳此处了解:Gin框架获取请求参数的各种方式详解 - 掘金 (juejin.cn)

(2)发起话题

Router/Router.go

image.png

Controller/PublishTopic.go

image.png

Service/PublishTopic.go

image.png

Repository/Topic.go

image.png

(3)回复发帖

Router/Router.go

image.png

Controller/PublishPost.go

image.png

Service/PublishPost.go

image.png

Repository/Post.go

image.png

3.2 文件处理功能

(1)文件读取

Repository/Init.go

image.png

(2)文件写入

Repository/Store.go

image.png

3.3 获取话题页面功能

Router/Router.go

image.png

Controller/QueryTopicInfo.go

image.png

Service/QueryTopicInfo.go

image.png

4 效果呈现:

(1)注册用户:

image.png image.png

(2)发起话题:

image.png image.png

(3)回复发帖:

image.png image.png

(4)获取话题页面:

image.png

本项目采用Apifox进行测试,相关教程可看官方文档:快速上手 | Apifox 帮助文档

5 小结:

作为一名Go语言初级学习者,本次项目实践,使我对于项目的分析设计以及Gin框架的使用进行了熟悉,在代码的规范上也有了一定经验,算是小有成长,希望能继续保持。本项目源码已上传至 github ,欢迎各位批评指正。