实现一个简单的学生信息管理系统,满足增删改查
保存学生的:姓名 性别 年龄 班级
简单版本,应该分成两部分:界面操作+后台服务:
- 界面部分暂时不好实现,可以用curl等工具来模拟
- 后台服务,可用http提供服务,mysql提供持久化
因为是简单版本,所以不需要太多的灵活性,接口设计要依据"简单可用"即可
系统分层,可用简单的三层:
- 呈现层,也就是界面,用curl等工具来模拟
- 业务层,使用go来实现,对上通过api提供业务功能,对下使用db的持久化功能
- 持久层,也就是数据层,使用mysql提供持久化能力
接口 | 接口名 | 参数 | 返回值 | 补充说明 |
---|---|---|---|---|
增 | add | 信息 | 成功失败、学生编码 | 信息包含: 姓名、性别、年龄、班级 |
删 | delete | 学生编码 | 成功失败 | |
改 | update | 信息 | 成功失败 | 信息包含: 姓名、性别、年龄、班级 |
查 | query | 学生编码 | 成功失败 | 信息包含: 姓名、性别、年龄、班级 |
业务层利用http提供4个接口,后台持久化采用mysql,本着学习的目标
- 使用quic来实现http框架 quic-go库
- 访问数据库使用标准的db库来实现
表设计:
- 单库单表设计即可
- 熟悉quic库:quic-go, 这个库依赖太多,深入了解花的时间太多,先还是用http2来实现
- 熟悉go的net/http库:net/http, 已搭建一个可运行的、基本的程序,支持4个api:增删改查
- 确定接口和数据模型
- 添加一个mysql服务,使用容器即可;熟悉db/sql库
- docker pull mysql
- docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -di mysql
- 熟悉[database/sql库]
- 修改程序,添加--reset参数,用于初始化db环境;不带参数表示走默认流程
- 完成了新增
todo:
- 删改查
数据模型,单表即可实现:
字段 | 说明 | 备注 |
---|---|---|
id | int 自增索引 | 可用于标识一个学生 |
name | char(30) 姓名 | 不为空 |
gender | int 性别 | 1男2女 不为空 |
age | int 年龄 | 不为空 |
class | char(30) 班级 | 不为空 |
接口 | 入参 | 出参 | 用法 |
---|---|---|---|
add | 学生信息 | 执行结果 + 学生信息 | 非幂等性,使用一次增加一个学生 |
delete | 学生标识 | 执行结果 | |
update | 学生信息 | 新学生信息 | |
query | 学生标识 | 学生信息 |