青训营项目1
项目实战
实现掘金青训营报名页码的后端部分
需求描述
- 展示话题(标题、文字描述)和回帖列表
- 不考虑前端页面实现,仅实现一个本地web服务
- 话题和回帖数据用文件存储
附加要求:
- 支持发布帖子
- 本地id生成要保证不重复
- append文件 更新索引要注意Map的并发安全问题
项目概述
示例图如下:
项目分层结构如下:
- 数据层:Repository 直接同数据库或数据存储文件打交道,该部分需要对数据做初步的反序列化(将以二进制形式存储的数据转换为对象)并封装对数据的增删改查操作
- 逻辑层: Service 处理核心业务的逻辑输出,接收Repository层的数据并进行打包封装
- 视图层:Controller 处理和外部的交互逻辑,将经过上两层处理的数据以客户端需要的格式发送
代码实现
Repository部分:
首先使用map数据结构定义索引(按值查找,感觉像是一个哈希表),仅展示部分关键代码:
1 |
|
接着实现查询操作
1 |
|
Service部分
实体:
1 |
|
Service部分要执行的操作如下:
graph LR;
参数校验-->准备数据
准备数据-->组装实体
1 |
|
Controller部分
定义返回的数据格式
1 |
|
定义QueryPageInfo方法,根据topicId获取返回的数据
1 |
|
Router部分
该部分主要实现以下操作:
- 初始化数据索引
- 初始化引擎配置
- 构建路由
- 启动服务
1 |
|
使用postman测试接口:http://localhost:8080/community/page/get/:2
返回的json数据如下:
1 |
|
青训营项目1
http://example.com/2023/01/27/青训营项目实战1/