bin
存放二进制文件configs
存放配置文件docs
存放接口文档global
全局变量internal
项目的主体部分pkg
为本项目设计的工具包script
脚本(sql语句等)storage
持久化层,存放日志,保存的图片等
-
公共model
-
blog_article
文章title
: 标题desc
:描述content
:内容cover_image_url
图片链接state
:文章状态
-
blog_tag
标签name
标签名state
状态
-
blog_article_tag
文章和标签的关联关系tag_id
标签idarticle_id
文章id
-
blog_auth
token信息app_key
app_keyapp_secret
app_secret
使用viper搭配yaml文件进行配置文件的读取
swaggo使用
-
安装
如果出现swag未找到,请将下载的
swag.exe
放到GOPATH/bin/
下 -
main
中注释 -
Handle 注释
-
生成文档和测试
在项目运行后直接访问
IP:端口/swagger/index.html
即可
用于项目中的使用
用于将项目中的一些操作统一封装起来
-
app.go
统一响应处理
-
form.go
参数绑定 还是利用了
shouldBind
举例:
参数绑定:
-
jwt.go
API 权限访问控制
JWT简介:
第一部分指明对第三部分的加密算法以及使用的令牌类型
第二部分存储令牌的相关信息,如有效时间等,用于校验是否过期
第三部分使用一个密钥和第二部分通过第一部分的加密算法进行加密,用于校验令牌内容是否被更改过
使用
jwt-go
包 进行jwt的生成和解析(判断时间和是否被修改过,令牌中无任何声明被认为是有效的)对应中间件处理
-
分页处理
统一对分页进行处理
-
time.go
对时间的格式化处理
邮件服务
对错误的统一标记
使用 ratelimit
包实现简单高效地令牌桶
使用 lumberjack
进行日志的持久化保存
日志内容设置
日志格式化输出
使用fsnotify
包实现
viper
则是通过 fsnotify
实现监听
使用:
初始化时加载配置文件
如果文件改变则重新读取配置文件
将信息先保存起来,再发送
捕获异常并且短信通知
调用关系
router 层负责数据的整理然后与service层交互,回复数据给客户
service层负责与不同dao层沟通获取数据,返回给router
dao层负责组装数据与model层沟通,返回数据给service层
model层只负责与数据库进行操作,返回有用的数据给dao层
结论: service层的模型负责绑定客户数据和返回给客户.over
先把没完成的任务完成了再退出(同时拒绝接受新的连接)
CGO_ENABLED=0 GOOS=linux go build -a -o blog_service .
关闭CGO,指定目标操作系统为linux,强制重新编译所有依赖的文件.重命名为blog_service