个人自用的Go博客系统的后端服务,采用gin框架+mysql数据库构建,目前正在实现中。
# configs/config.yaml
Server:
RunMode: debug
HttpPort: 8080
ReadTimeout: 60
WriteTimeout: 60
App:
DefaultPageSize: 10
MaxPageSize: 100
LogSavePath: storage/logs
LogFileName: app
LogFileExt: .log
# 上传服务
UploadSavePath: storage/uploads
UploadServerUrl: http://127.0.0.1:8080/static
UploadImageMaxSize: 5 # MB
UploadImageAllowExts:
- .jpg
- .jpeg
- .png
UploadMarkdownAllowExts:
- .md
QrCodeSavePath: storage/qrcode
PrefixUrl: 127.0.0.1:8080
Database:
DBType: mysql
Username: username # 填写你的数据库账号
Password: password # 填写你的数据库密码
Host: host:3306 # 填写你的数据库地址
DBName: blog
TablePrefix:
Charset: utf8
ParseTime: True
LogMode: info
MaxIdleConns: 10
MaxOpenConns: 30
Jwt:
Secret: initcool # 密钥
Issuer: blog.nmslwsnd.com
Expire: 72000
Pay:
AlipayPrivateKey: # 支付宝私钥
AlipayAppId: 2021000119643838
AlipayPublicKey: # 支付宝公钥
Redis:
Host: 127.0.0.1:6379
Password:
MaxIdle: 30 # 最大空闲连接数
MaxActive: 0 # 在给定时间内,允许分配的最大连接数(当为零时,没有限制)
IdleTimeout: 0 # 在给定时间内将会保持空闲状态,若到达时间限制则关闭连接(当为零时,没有限制)
go run main.go
# swagger 初始化
swag init
# 默认接口文档地址
http://127.0.0.1:8080/swagger/index.html
已实现功能 |
未实现功能 |
JWT中间件 |
链路追踪 |
数据库回调 |
MarkDown文件绑定文章ID |
验证码生成及校验 |
日志中间件 |
登录,注册功能 |
|
文章增删改查 |
|
上传文件 |
|
api文档生成 |
|
接口限流 |
|
系统管理员识别 |
|
自定义验证器 |
|
casbin权限管理系统 |
|
支付宝支付 |
|
MarkDown渲染 |
|
标签系统 |
|
# 需要确保导入了生成的docs/docs.go文件,这样特定的配置文件才会被初始化
_ "github.com/limitcool/blog/docs"
注解 |
描述 |
@Summary |
摘要 |
@Produce |
API 可以产生的 MIME 类型的列表,MIME 类型你可以简单的理解为响应类型,例如:json、xml、html 等等 |
@Param |
参数格式,从左到右分别为:参数名、入参类型、数据类型、是否必填、注释 |
@Success |
响应成功,从左到右分别为:状态码、参数类型、数据类型、注释 |
@Failure |
响应失败,从左到右分别为:状态码、参数类型、数据类型、注释 |
@Router |
路由,从左到右分别为:路由地址,HTTP 方法 |
# Casbin-gorm-adapter
# 即使使用的是Mysql数据库,Casbin-gorm-adapter也需要安装sqlserver及postgres依赖
go get gorm.io/driver/postgres
go get gorm.io/driver/sqlserver
# casbin数据库字段解析
- ptype: 类型: g代表角色继承关系,p代表路由访问控制策略
- v0: RoleID 用于判断用户组别
- v1: /api/v1/* 代表RoleID可以访问v1内的路由
- V2: GET 支持RoleID可以进行的访问方式
# 在main.go下导入bootstrap
_ "github.com/limitcool/blog/bootstrap"
// 注册请求示例
{
"username":"admin",
"password":"password",
"profile":{
"desc":"个人信息描述",
"img":"图片URL"
}
}
# 安装air
go install github.com/cosmtrek/air@latest
# 新建文件.air.conf
touch .air.conf
# 在.air.conf添加以下内容
go run main.go
# 运行air
air