# gin-demo **Repository Path**: chenrenh/gin-demo ## Basic Information - **Project Name**: gin-demo - **Description**: golang gin - **Primary Language**: Go - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-03-05 - **Last Updated**: 2025-06-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # gin-demo - 学习:https://eddycjy.com/posts/go/gin/2018-02-11-api-01/ - gorm v2 文档:https://gorm.io/zh_CN/docs/index.html - go validator 文档:https://pkg.go.dev/github.com/go-playground/validator/v10#section-readme - validator 用法示例:https://segmentfault.com/a/1190000022272272 - validator 常用介绍: https://www.cnblogs.com/xingxia/p/golang_validator.html - windows压测工具: https://github.com/codesenberg/bombardier - golang chatgpt api https://github.com/sashabaranov/go-openai - stream 前端stream流:https://www.jianshu.com/p/049a168fc864?share_token=A1F1C0E0-BCA6-4B5D-ADBD-3E5F4E13379F&tt_from=weixin&utm_source=weixin&utm_medium=toutiao_ios&utm_campaign=client_share&wxshare_count=1 - ChatGPT Web ui界面的:https://github.com/Chanzhaoyu/chatgpt-web - highlight.js代码高亮脚本的基本用法:https://www.cnblogs.com/bkzj/p/16739978.html - 复制库 https://clipboardjs.com - fontawesome: https://cdn.fontawesome.com/embed-codes - textarea自适应高度: http://www.jacklmoore.com/autosize/ # 配置文件 - 需要复制一份配置文件 - cp conf/app.ini.example conf/app.ini - 然后 将 database/gin-demo.sql导入数据库,配置app.ini对应的数据库相关配置 # 启动项目 - 在项目根目录执行 `go run main.go` # 目录介绍 ```shell gin-demo ├── README.en.md ├── README.md ├── conf ├── middleware ├── models ├── pkg ├── routers └── runtime ``` - cong: 用于存储配置文件 - middleware: 中间件 - models: 数据模型 - pkg: 第三方包 - routers: 路由逻辑处理 - runtime: 运行时数据 # 安装gin框架 - 进入gin-demo目录然后执行: - go get -u github.com/gin-gonic/gin ```shell ~/Desktop/www/go/gin-demo[master]$ go get -u github.com/gin-gonic/gin go: downloading github.com/gin-gonic/gin v1.9.0 go: downloading github.com/mattn/go-isatty v0.0.17 go: downloading golang.org/x/net v0.7.0 go: downloading github.com/bytedance/sonic v1.8.0 go: downloading github.com/goccy/go-json v0.10.0 go: downloading github.com/pelletier/go-toml/v2 v2.0.6 go: downloading github.com/ugorji/go/codec v1.2.9 go: downloading google.golang.org/protobuf v1.28.1 ...... ``` - 这时候你再检查一下该目录下,会发现多个了个 go.sum 文件 - go.sum 文件详细罗列了当前项目直接或间接依赖的所有模块版本,并写明了那些模块版本的 SHA-256 哈希值以备 Go 在今后的操作中保证项目所依赖的那些模块版本不会被篡改。 - go.mod也会有所变化 - 确确实实发生了改变,那多出来的东西又是什么呢,go.mod 文件又保存了什么信息呢,实际上 go.mod 文件是启用了 Go modules 的项目所必须的最重要的文件,因为它描述了当前项目(也就是当前模块)的元信息,每一行都以一个动词开头,目前有以下 5 个动词: 惑 indirect 是什么东西,indirect 的意思是传递依赖,也就是非直接依赖。 - module:用于定义当前项目的模块路径。 - go:用于设置预期的 Go 版本。 - require:用于设置一个特定的模块版本。 - exclude:用于从使用中排除一个特定的模块版本。 - replace:用于将一个模块版本替换为另外一个模块版本。 - 你可能还会疑惑 indirect 是什么东西,indirect 的意思是传递依赖,也就是非直接依赖。 # 再想想 再想一想 刚刚在执行了命令 $ go get -u github.com/gin-gonic/gin 后,我们查看了 go.mod 文件,如下: ``` ... require ( github.com/gin-contrib/sse v0.1.0 // indirect github.com/gin-gonic/gin v1.4.0 // indirect ... ) ``` 你会发现 go.mod 里的 github.com/gin-gonic/gin 是 indirect 模式,这显然不对啊,因为我们的应用程序已经实际的编写了 gin server 代码了,我就想把它调对,怎么办呢,在应用根目录下执行如下命令: $ go mod tidy 该命令主要的作用是整理现有的依赖,非常的常用,执行后 go.mod 文件内容为: ``` ... require ( github.com/gin-contrib/sse v0.1.0 // indirect github.com/gin-gonic/gin v1.4.0 ... ) ``` 可以看到 github.com/gin-gonic/gin 已经变成了直接依赖,调整完毕。