更多文章 狂点 -> ISLANDhtml
Gin 是一个用 Golang 写的 http web 框架。git
这是来自 Gin Github 上的描述。github
用 GoLand
新建项目的时候,咱们选择 Go Modules(vgo)
,填写咱们的项目地址和项目名称,咱们命名为 GinHello
。golang
点击 Create
,此时 Goland
为咱们生成了项目目录,Go
项目的目录永远是那么的简单,比 Java
的 Maven
或者 Gradle
生成的项目目录简单多了。web
GinHello
|
|-go.mod
复制代码
对,就是一个文件 ,一个 Go module
文件。go mod
是 Go
官方引入的一个依赖管理工具。浏览器
经过 go mod
文件进行依赖的。服务器
require github.com/gin-gonic/gin v1.4.0
框架
咱们把上面的依赖进行添加到 go module
中, goLand
会自动帮咱们进行依赖的下载和管理。工具
当完成依赖的添加,就能够开始写代码了。单元测试
新建一个 main.go
文件。
package main
import (
"github.com/gin-gonic/gin"
)
func main() {
router := gin.Default()
router.Run()
}
复制代码
Gin
只须要两行代码就能够把咱们的服务跑起来。
咱们只要点击运行,项目便会启动一个 8080
端口,打开浏览器 localhost:8080
咱们即可以看到页面上提示出 404 page not found
,这是由于咱们的根路由上并无返回任何结果。同时咱们能够在控制台上看到一些打印信息,其中就包括咱们刚刚访问根路由的端口。
项目已经启动了,那么如何返回一个接口呢?
经过 router
的 Handle
进行配置咱们返回的参数。
// 省略代码
// 添加 Get 请求路由
r.GET("/", func(context *gin.Context) {
context.String(http.StatusOK, "hello gin")
})
// 省略代码
复制代码
此时咱们重启项目,从新访问页面 localhost:808
,此刻的页面上已经显示了 hello gin
。
一样,咱们还能够进行 POST
,PUT
,DELETE
等请求方式。
单元测试是项目不能缺乏的模块,也是保障项目能够正常运行的重要依赖。下面就对 Gin 进行单元测试。
为了方便单元测试,咱们首先要对咱们的项目进行一下抽取。
新创建一个文件夹叫作 initRouter
创建 go
文件 initRouter.go
package initRouter
import (
"github.com/gin-gonic/gin"
"net/http"
)
func SetupRouter() *gin.Engine {
router := gin.Default()
// 添加 Get 请求路由
router.GET("/", func(context *gin.Context) {
context.String(http.StatusOK, "hello gin")
})
return router
}
复制代码
同时修改 main.go
package main
import (
"GinHello/initRouter"
)
func main() {
router := initRouter.SetupRouter()
_ = router.Run()
}
复制代码
完成了项目测试的初步创建。
创建 test
目录, golang
的单元测试都是以 _test
结尾,创建 index_test.go
文件。
package test
import (
"GinHello/initRouter"
"github.com/stretchr/testify/assert"
"net/http"
"net/http/httptest"
"testing"
)
func TestIndexGetRouter(t *testing.T) {
router := initRouter.SetupRouter()
w := httptest.NewRecorder()
req, _ := http.NewRequest(http.MethodGet, "/", nil)
router.ServeHTTP(w, req)
assert.Equal(t, http.StatusOK, w.Code)
assert.Equal(t, "hello gin", w.Body.String())
}
复制代码
经过 assert
进行断言,来判断返回状态码和返回值是否与代码中的值一致。
此时的项目目录为:
GinHello
|
|-initRouter
| |-initRouter.go
|
|-test
| |-index_test.go
|
|-main.go
|-go.mod
|-go.sum
复制代码
运行单元测试,控制台打印出单元测试结果。
--- PASS: TestIndexGetRouter (0.02s)
PASS
经过简单的搭建一个 Gin 项目,能够看到 Go 语言搭建一个 Http 服务器很简单,也很方便,零配置便可完成项目并运行起来。