代码仓库
创建项目
先创建目录, 然后在该目录下执行
1 | go mod init quick-start |
目录结构
一般web工程采用MVC结构, M就是model, V是view, C是controller
- Model(模型)
负责管理应用程序的核心数据和业务逻辑。
与数据库或其他数据源交互,并处理数据的增删改查操作。
当数据发生变化时,通知View进行更新。 - View(视图)
负责显示用户界面,通常基于Model的数据进行渲染。
用户可以通过View与应用程序进行交互。
View监听Model的变化并自动刷新显示。 - Controller(控制器)
负责接收用户的输入(例如点击按钮、提交表单等),并协调Model和View之间的交互。
根据用户的操作调用Model的方法或更新View的状态。
控制器充当Model和View之间的桥梁。
所以一般的目录结构包含
models/controllers/middleware
其中, models存放的是模型文件, controllers存放的是控制器文件, middleware存放的是中间件文件
而views则一般是单独分离出前端项目来开发
1 | - common/ 或 utils/ |
数据库
我们使用gorm框架操作数据库
创建数据库表
gorm支持自动生成数据库表结构, 只需要定义模型结构体, 然后使用gorm的代码来生成就行
先连接到数据库, 为了方便, 我们使用sqlite
1 | // initializers/loadEnv.go |
数据库等配置, 我们使用.env文件来保存
1 | # web运行端口 |
go语言加载.env文件
1 | // initializers/loadEnv.go |
声明对应数据库表的模型model
1 | // models/user.go |
1 | // models/post.go |
用代码生成数据库表
1 | // migrate/migrate.go |
用户信息表
增删改查
实现对用户信息的基本操作:增加、删除、修改和查询。
1 | // user_test.go |
密码加密
为了保证用户信息安全,需要对用户的密码进行加密处理。
1 | import ( |
创建JWT令牌
JWT(JSON Web Token)是一种开放标准,用于在网络应用环境间安全地传递声明。创建JWT令牌是为了实现用户身份验证。
1 | import ( |
进行测试
帖子信息表
增删改查
实现对帖子信息的基本操作:增加、删除、修改和查询。
1 | // /post_test.go |
网络接口
定义路由
restful风格API:
HTTP 方法|操作类型|示例
GET|查询资源|获取用户列表 /api/users
POST|创建资源|创建新用户 /api/users
PUT|更新资源|更新指定用户 /api/users/{id}
DELETE|删除资源|删除指定用户 /api/users/{id}
1 | // /main.go |
登陆注册
实现用户的登录和注册功能,包括身份验证和账户创建。
1 | // controllers/user.go |
帖子信息接口
提供获取、发布、更新和删除帖子信息的 API 接口。
1 | // controllers/post.go |
鉴权和跨域中间件
鉴权中间件用于验证用户身份,确保只有授权用户才能访问特定资源。
跨域中间件用于解决跨域请求问题,允许来自不同域的请求访问服务器资源。
1 | // middleware/auth.go |
1 | // middleware/cors.go |
使用APIfox进行测试
APIfox是一个接口测试工具
apifox
本案例的接口我已经共享了:
接口文档
目前较成熟的二开框架
暂时不了解, 可以看看别人的回答
link
社群
你可以在这些平台联系我:
- bili: 刚子哥forever
- 企鹅群: 940263820
- gitee: gitee
- 博客: malcode-site
- 邮箱: malguy2022@163.com
- 知乎: 乐妙善哉居士
- csdn: 飞鸟malred