11# 5.1 Gin 实战:Hello World
22
3- ## 1. 环境准备
3+ ## 1. 环境的准备
44
5- 打开你的 Goland,设置好 GOPATH,我这里设置的是 ` E:\ MING- Code\ Golang\ `
5+ 打开你的 Goland,设置好 GOPATH,我这里设置的是 ` /Users/ MING/ Code/ Golang`
66
7- ![ image-20200419133606190 ] ( E:\MING-Git\GolangCodingTime\source\c05\image-20200419133606190.png )
7+ 设置 GOPATH
88
9- 并新建一个项目目录: ` E:\ MING-Code\Golang\src\github.com\iswbm\gin-example `
9+ ![ image-20200419171345699 ] (/Users/ MING/Library/Application Support/typora-user-images/image-20200419171345699.png)
1010
11- > 以上示例仅为我个人习惯,你无需要照搬,可根据你个人使用习惯灵活配置。
11+ 开启 GO MODULES,并设置代理
1212
13+ ![ image-20200419165821668] (/Users/MING/Library/Application Support/typora-user-images/image-20200419165821668.png)
1314
14-
15- 接下来使用 go mod 命令进行项目的初始化。
15+ 然后在终端下,使用 ` go get ` 下载安装 gin 框架
1616
1717``` shell
18- $ go mod init github.com/iswbm/gin-example
19- go: creating new go.mod: module github.com/iswbm/gin-example
18+ $ go get -u github.com/gin-gonic/gin
2019```
2120
22- 最后使用 ` go get ` 下载安装 gin 框架
21+ 进入 ` gin-example ` 目录,使用 ` go mod init ` 命令进行项目的初始化。
2322
2423``` shell
25- $ go get -u github.com/gin-gonic/gin
24+ $ go mod init github.com/iswbm/gin-example
25+ go: creating new go.mod: module github.com/iswbm/gin-example
2626```
2727
2828
2929
30- ## 2. 最简单的示例
30+ ## 2. 简单的示例
3131
3232在 gin-example 根目录下,新建一个 ` main.go ` 的文件
3333
@@ -47,176 +47,51 @@ func main(){
4747 })
4848 })
4949
50- // 默认在监听 0.0.0.0:8080
51- // r.Run("localhost:8080")
52- r.Run ()
50+ r.Run (" localhost:8080" )
5351}
5452```
5553
56- 一切准备好后,就可以运行了.
57-
58- ```
59- $ go run main.go
60- ```
61-
62- 从输出来看,它提示我们监听端口是 8080
63-
64- ![ ] (/Users/MING/Library/Application Support/typora-user-images/image-20200324211928616.png)
65-
66- 我们可以使用浏览器试着访问一下 ` 0.0.0.0:8080/ping ` ,如下图所示,访问成功。
67-
68- ![ ] (/Users/MING/Library/Application Support/typora-user-images/image-20200324205302201.png)
69-
70-
71-
72- ## 2. 项目结构及依赖管理
73-
74- 以之前创建的项目目录为根目录,继续创建如下目录
75-
76- - conf:用于存储配置文件
77- - middleware:应用中间件
78- - models:应用数据库模型
79- - pkg:第三方包
80- - routers 路由逻辑处理
81- - runtime:应用运行时数据
82-
83- 最终效果如下
84-
85- ```
86- $ tree
87- .
88- ├── conf
89- ├── go.mod
90- ├── go.sum
91- ├── main.go
92- ├── middleware
93- ├── models
94- ├── pkg
95- ├── routes
96- └── runtime
97- ```
98-
99- 在这个目录下,每个文件夹下都是一个模块。
100-
101- 由于最开始我们定义了模块名为 ` github.com/iswbm/gin-web-example ` ,所以当我们在一个模块中引用另一个模块的内容,也必须会从这里` github.com/iswbm/gin-web-example ` 导入,但是当我们还在开发阶段时,这段模块还未上传至 github 仓库,导入时肯定会失败。
102-
103- 也就是说,你的每次调试都必须先将你的代码全部上传至 github ,项目才能运行。
104-
105- 那有什么办法可以解决这种低效的开发模式呢?
106-
107- 这时候,就要提到之前提过的 go.mod 里的 replace 关键字。
108-
109- 比如 ` github.com/iswbm/gin-web-example/routers => ./routers ` 这句话后,当我们在项目中导入 ` github.com/iswbm/gin-web-example/routers ` 时,它不会去 github 上查找拉取包,而是会从本地的 ` ./routes ` 查找。
110-
111- ```
112- module github.com/iswbm/gin-web-example
113-
114- go 1.14
115-
116- require github.com/gin-gonic/gin v1.6.1
117-
118- replace (
119- github.com/iswbm/gin-web-example/conf => ./pkg/conf
120- github.com/iswbm/gin-web-example/middleware => ./middleware
121- github.com/iswbm/gin-web-example/models => ./models
122- github.com/iswbm/gin-web-example/pkg/setting => ./pkg/setting
123- github.com/iswbm/gin-web-example/routers => ./routers
124- )
125- ```
126-
127-
128-
129- ## 3. 数据库创建
130-
131-
132-
133- ![ image-20200325203348548] (/Users/MING/Library/Application Support/typora-user-images/image-20200325203348548.png)
54+ 将上面这段代码放入 Goland 中后,如果碰到和我一样的情况(如下图),请将光标放在导入的这行,并使用快捷键 ` Option + Enter ` (Mac OS)同步包的信息。
13455
56+ ![ image-20200419173514746] (/Users/MING/Library/Application Support/typora-user-images/image-20200419173514746.png)
13557
58+ 确保在 Goland 中没有红色字体后,点击那个运行按钮启动程序
13659
137- 使用这段 SQL 命令,创建标签表
60+ ![ image-20200419174031233 ] (/Users/MING/Library/Application Support/typora-user-images/image-20200419174031233.png)
13861
139- ``` sql
140- CREATE TABLE `blog_tag ` (
141- ` id` int (10 ) unsigned NOT NULL AUTO_INCREMENT,
142- ` name` varchar (100 ) DEFAULT ' ' COMMENT ' 标签名称' ,
143- ` created_on` int (10 ) unsigned DEFAULT ' 0' COMMENT ' 创建时间' ,
144- ` created_by` varchar (100 ) DEFAULT ' ' COMMENT ' 创建人' ,
145- ` modified_on` int (10 ) unsigned DEFAULT ' 0' COMMENT ' 修改时间' ,
146- ` modified_by` varchar (100 ) DEFAULT ' ' COMMENT ' 修改人' ,
147- ` deleted_on` int (10 ) unsigned DEFAULT ' 0' ,
148- ` state` tinyint (3 ) unsigned DEFAULT ' 1' COMMENT ' 状态 0为禁用、1为启用' ,
149- PRIMARY KEY (` id` )
150- ) ENGINE= InnoDB DEFAULT CHARSET= utf8 COMMENT= ' 文章标签管理' ;
151- ```
152-
153-
154-
155- ![ image-20200325203447004] (/Users/MING/Library/Application Support/typora-user-images/image-20200325203447004.png)
62+ 或者你也可以使用 ` go run ` 命令来启动
15663
157- 使用这段 SQL 命令,创建文章表
158-
159- ``` sql
160- CREATE TABLE `blog_article ` (
161- ` id` int (10 ) unsigned NOT NULL AUTO_INCREMENT,
162- ` tag_id` int (10 ) unsigned DEFAULT ' 0' COMMENT ' 标签ID' ,
163- ` title` varchar (100 ) DEFAULT ' ' COMMENT ' 文章标题' ,
164- ` desc` varchar (255 ) DEFAULT ' ' COMMENT ' 简述' ,
165- ` content` text ,
166- ` created_on` int (11 ) DEFAULT NULL ,
167- ` created_by` varchar (100 ) DEFAULT ' ' COMMENT ' 创建人' ,
168- ` modified_on` int (10 ) unsigned DEFAULT ' 0' COMMENT ' 修改时间' ,
169- ` modified_by` varchar (255 ) DEFAULT ' ' COMMENT ' 修改人' ,
170- ` deleted_on` int (10 ) unsigned DEFAULT ' 0' ,
171- ` state` tinyint (3 ) unsigned DEFAULT ' 1' COMMENT ' 状态 0为禁用1为启用' ,
172- PRIMARY KEY (` id` )
173- ) ENGINE= InnoDB DEFAULT CHARSET= utf8 COMMENT= ' 文章管理' ;
174- 3 、 认证表
17564```
176-
177- 使用这段 SQL 命令,创建认证表
178-
179- ``` sql
180- CREATE TABLE `blog_auth ` (
181- ` id` int (10 ) unsigned NOT NULL AUTO_INCREMENT,
182- ` username` varchar (50 ) DEFAULT ' ' COMMENT ' 账号' ,
183- ` password` varchar (50 ) DEFAULT ' ' COMMENT ' 密码' ,
184- PRIMARY KEY (` id` )
185- ) ENGINE= InnoDB DEFAULT CHARSET= utf8;
186-
187- INSERT INTO ` blog` .` blog_auth` (` id` , ` username` , ` password` ) VALUES (null , ' test' , ' test123456' );
65+ $ go run main.go
18866```
18967
68+ 从输出来看,它提示我们监听端口是 8080
19069
70+ ![ image-20200419174203094] (/Users/MING/Library/Application Support/typora-user-images/image-20200419174203094.png)
19171
192- ## 4. 配置文件
193-
194- 在 conf 目录下新建 app.ini 文件,内容如下
72+ 接下来我们就可以测试一下刚刚写的HTTP接口是否可通。
19573
196- ``` ini
197- # debug or release
198- RUN_MODE = debug
74+ 方法有很多种
19975
200- [app]
201- PAGE_SIZE = 10
202- JWT_SECRET = 23347$040412
76+ 1 . 直接浏览器访问: http://localhost:8080/ping
77+ 2 . 使用 PostMan 发送请求
78+ 3 . 直接使用 Goland 中自带的 HTTP 客户端工具进行请求
20379
204- [server]
205- HTTP_PORT = 8000
206- READ_TIMEOUT = 60
207- WRITE_TIMEOUT = 60
80+ 这里为了方便,我使用第三种方法,步骤如下:
20881
209- [database]
210- TYPE = mysql
211- USER = 数据库账号
212- PASSWORD = 数据库密码
213- # 127.0.0.1:3306
214- HOST = 数据库IP:数据库端口号
215- NAME = blog
216- TABLE_PREFIX = blog_
217- ```
82+ ![ image-20200419174858761] (/Users/MING/Library/Application Support/typora-user-images/image-20200419174858761.png)
21883
84+ 填写请求信息后,点击运行,效果如下:
21985
86+ ![ image-20200419175221473] (/Users/MING/Library/Application Support/typora-user-images/image-20200419175221473.png)
22087
88+ ## 3. 项目目录
22189
90+ 以之前创建的项目目录为根目录,继续创建如下目录
22291
92+ - conf:用于存储配置文件
93+ - middleware:应用中间件
94+ - models:应用数据库模型
95+ - pkg:存放各种代码包
96+ - routers:路由逻辑处理
97+ - runtime:应用运行时数据
0 commit comments