Skip to content

Commit 1613958

Browse files
committed
Update:更新文章
1 parent d2bfcca commit 1613958

File tree

1 file changed

+38
-163
lines changed

1 file changed

+38
-163
lines changed

source/c05/c05_01.md

Lines changed: 38 additions & 163 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,33 @@
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

Comments
 (0)