代码拉取完成,页面将自动刷新
ginpro 根目录
├─boot 初始化启动数据库连接等
├─cmd 自动生成model文件
├─common 通用数据字典和全局变量
│ ├─dict 数据字典,错误码和常用参数
│ └─global 全局变量
├─config 系统配置文件目录
│ ├─config.go 配置初始化
│ ├─dev.yaml 开发机配置
│ └─qa.yaml 测试环境配置
├─docs swagger文档目录(下面三个文件在根目录swag init命令生成)
│ ├─docs.go
│ ├─swagger.json
│ └─swagger.yaml
├─internal
│ ├─api 接口
│ ├─dao dao层,对数据库的增删改查
│ ├─middleware 中间件
│ ├─model model层,数据库字段表名等
│ ├─router 路由
│ └─service
├─pkg
│ ├─app 接口
│ │ ├─app.go 接口响应等方法封装
│ │ ├─form.go 表单验证封装
│ │ ├─jwt.go jwt鉴权
│ │ └─pagination.go 分页
│ ├─es elasticsearch
│ ├─gredis redis
│ ├─helper
│ │ ├─convert 常用转换
│ │ ├─email 邮件发送
│ │ ├─files 文件操作相关
│ │ ├─gjson json操作
│ │ └─gtime 时间相关操作
│ ├─httpclient 请求第三方,类似于curl
│ ├─limiter 限流
│ ├─logger 日志
│ ├─mgodb mongodb
│ ├─rabbitmq rabbitmq
│ ├─security md5,aes加密等
│ └─tracer 链路追踪
├─storage
│ ├─logs 日志
│ └─uploads 上传的文件
├─go.mod 模块管理
└─main.go 入口文件
docker run -d --name jaeger \
-e COLLECTOR_ZIPKIN_HTTP_PORT=9411 \
-p 5775:5775/udp \
-p 6831:6831/udp \
-p 6832:6832/udp \
-p 5778:5778 \
-p 16686:16686 \
-p 14268:14268 \
-p 9411:9411 \
jaegertracing/all-in-one:latest
hook, err := logrus_sentry.NewSentryHook(config.Conf.Sentry.Dsn, []logrus.Level{
logrus.PanicLevel,
logrus.FatalLevel,
logrus.ErrorLevel,
})
if err == nil {
global.Logger.Hooks.Add(hook)
hook.Timeout = 0
hook.StacktraceConfiguration.Enable = true
}
go mod tidy
,不清楚的请自行百度一下,先设置好proxy再执行命令,如:GOPROXY=https://goproxy.cn
go run genModel.go
加上以下参数或者不加
-c string 指定要使用的配置文件路径 (default "../config/")
-r string 是否替换旧文件生成 (default "n" "n|y")
-d string 数据库名,不填则按配置文件来
-f string 指定要使用的配置文件名 (default "dev") 使用dev.yaml
-m string 指定要生成的model路径 (default "../internal/model/")
-t string 表名,多个使用英文半角,分割,不填则生成数据库下所有表的model
go run main.go
即可启动go get github.com/pilu/fresh
,然后使用fresh命令即可启动,和上面第10步骤二选一go get -u github.com/swaggo/swag/cmd/swag@v1.6.5
go get -u github.com/swaggo/gin-swagger@v1.2.0
go get -u github.com/swaggo/files
go get -u github.com/alecthomas/template
// @Summary 获取列表
// @Produce json
// @Param name query string false "名称" maxlength(100)
// @Param state query int false "状态" Enums(0, 1) default(1)
// @Param page query int false "页码"
// @Param page_size query int false "每页数量"
// @Success 200 {object} model.Tag "成功"
// @Failure 400 {object} code.Error "请求错误"
// @Failure 500 {object} code.Error "内部错误"
// @Router /api/list [get]
func (c *Controller) List (c *gin.Context) {
app.Success(c, nil)
}
区分项目的话,在main入口函数添加注解:
// @title gin系统
// @version 1.0
// @description gin开发的系统
// @termsOfService
func main(){}
在model文件中添加
type ArticleSwagger struct {
List []*Article
Pager *app.Pager
}
import(
_ "ginpro/docs"
)
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
13.如果不需要其中的某些组件,如es,redis,mongo等,可以在boot/boot.go init方法中注释掉相关的即可,或者在配置文件中设置开关(自行实现即可)
curl -X POST http://127.0.0.1:8000/upload/file -F file=@{file_path} -F type=1
CREATE DATABASE blog;
USE blog;
CREATE TABLE `article` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
`introduction` varchar(500) COLLATE utf8mb4_unicode_ci,
`views` int(11) NOT NULL DEFAULT '0',
`content` varchar(5000) COLLATE utf8mb4_unicode_ci,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=Innodb DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT INTO blog.article VALUES(NULL, "我的第一篇文章", "文章简介", 100, "文章的内容很好看", "2020-02-02 02:22:22", "2020-02-02 02:22:22")
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。