repositorypackage
0.0.0-20220809090601-c6f1323f9dc2
Repository: https://github.com/limitcool/blog.git
Documentation: pkg.go.dev
# Packages
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
# README
Cooooooool-Blog
项目介绍
个人自用的Go博客系统的后端服务,采用gin框架+mysql数据库构建,目前正在实现中。
引用框架 | 项目地址 |
---|---|
WEB框架: Gin | Gin: https://gin-gonic.com/ |
ORM框架: Gorm | Gorm: https://gorm.io/ |
SQL数据库: Mysql8.0 | Mysql: https://www.mysql.com/ |
用户认证: Json Web Token | Jwt-go: https://github.com/golang-jwt/jwt |
验证码系统: base64Captcha | base64Captcha: https://github.com/mojocn/base64Captcha |
api文档生成: gin-swagger | gin-swagger: https://github.com/swaggo/gin-swagger |
配置文件解析: viper | viper: https://github.com/spf13/viper |
权限管理: Casbin | Casbin: https://casbin.org/ |
Casbin-gorm-adapter | Casbin-gorm-adapter: https://github.com/casbin/gorm-adapter |
支付功能:Gopay | Gopay: https://github.com/go-pay/gopay |
雪花算法:SnowFlake | SnowFlake: https://github.com/bwmarrin/snowflake |
填写配置文件
# 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渲染 | |
标签系统 |
Swagger 注解:
# 需要确保导入了生成的docs/docs.go文件,这样特定的配置文件才会被初始化
_ "github.com/limitcool/blog/docs"
注解 | 描述 |
---|---|
@Summary | 摘要 |
@Produce | API 可以产生的 MIME 类型的列表,MIME 类型你可以简单的理解为响应类型,例如:json、xml、html 等等 |
@Param | 参数格式,从左到右分别为:参数名、入参类型、数据类型、是否必填、注释 |
@Success | 响应成功,从左到右分别为:状态码、参数类型、数据类型、注释 |
@Failure | 响应失败,从左到右分别为:状态码、参数类型、数据类型、注释 |
@Router | 路由,从左到右分别为:路由地址,HTTP 方法 |
Casbin 注解:
# 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可以进行的访问方式
bootstrap初始化 注解:
# 在main.go下导入bootstrap
_ "github.com/limitcool/blog/bootstrap"
// 注册请求示例
{
"username":"admin",
"password":"password",
"profile":{
"desc":"个人信息描述",
"img":"图片URL"
}
}
air热重启
# 安装air
go install github.com/cosmtrek/air@latest
# 新建文件.air.conf
touch .air.conf
# 在.air.conf添加以下内容
go run main.go
# 运行air
air