Golang/Gin 学习

Golang-01 windows 环境 gin + swagg

2019-08-21  本文已影响0人  国服最坑开发
0x00 前言
  • 面向读者:
    第一次在Windows环境构建go开发环境.
  • 本文目的
    学习使用gin进行接口开发, 并为此接口服务添加 swagger 接口文档功能
  • 注意:
    请自带梯子
0x01 环境

本文开发环境为Windows 7, 所以这里以 win 7 为例进行介绍.

安装包下载

这里和java的工作机制不太一样.
不过感觉这种设定也挺好的,不用"满地图"到处找代码 :-)

GOARCH=amd64
GOBIN=D:\go\bin
GOOS=windows
GOPATH=D:\go_base
GOROOT=D:\go
设置环境变量

配置完成后, 打开一个新的命令行窗口, 能正常执行 go env表示安装配置成功.

go env

到这里, 开发环境已经基本配置完成 .

0x02 创建第一个Go版本的api项目

Go语言版本的RestApi框架有很多, 这里我们以https://github.com/gin-gonic/gin 作为学习对象.

go get -u github.com/gin-gonic/gin

执行正常结束后, 会在 %GOPATH%\src\github.com\gin-gonic\gin目录下多出一大票代码.
如你所想, 这个命令, 就是把 github上的代码下载到本地了.

  • one more thing
    Go编译成功后, 只有一个执行文件(便于发布?).
    因此, 就不难理解 , 为什么下载依赖, 其实就是把依赖的源码给拉下来了.
package main

import "github.com/gin-gonic/gin"

func main() {
    r := gin.Default()
    r.GET("/ping", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "pong",
        })
    })
    r.Run() // listen and serve on 0.0.0.0:8080
}

我们可以直接在IDE上 轻戳边上的小三角, 启动程序.

运行 接口成功

哇, 这代码量, 比SpringBoot 少了不是一点半点啊, 点赞

到这里呢, 框架开发的流程已经走完了, 接下来开发的部分, 参考文档慢慢学习.

0x03 导入 SwaggerUI

作为一个不爱写文档, 又恨别人不写文档的的程序员, 我们当然选择Swagger来做为接口说明输出啦.
这个神器可是Spring项目的标配了, go开发的接口当然也不能放松要求.

我们使用https://github.com/swaggo/gin-swagger作为 swagger接入方案.

跟上面的流程一样, 我们先下载依赖

go get -u github.com/swaggo/swag/cmd/swag
go get -u github.com/swaggo/gin-swagger
go get -u github.com/swaggo/files
go get -u github.com/alecthomas/template

其中

package main

import (
    "github.com/gin-gonic/gin"
    swaggerFiles "github.com/swaggo/files"
    "github.com/swaggo/gin-swagger"
    _ "hello_gin/docs"
)

// @title 国服最坑开发
// @version 1.0.1
// @description 神奇的API.
// @termsOfService http://swagger.io/terms/
// @contact.name API Support
// @contact.url http://www.swagger.io/support
// @contact.email support@swagger.io
// @license.name Apache 2.0
// @license.url http://www.apache.org/licenses/LICENSE-2.0.html
// @host localhost:8080
// @BasePath /
func main() {
    r := gin.Default()

    url := ginSwagger.URL("http://localhost:8080/swagger/doc.json") // The url pointing to API definition
    r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler, url))


    r.GET("/ping", pong)

    r.Run() // listen and serve on 0.0.0.0:8080
}

// Ping Pong
// @Summary Ping Pong
// @Description get string by ID
// @Tags 健康检测
// @Produce  json
// @Success 200
// @Router /ping [get]
func pong(ctx * gin.Context)  {
    ctx.JSON(200, gin.H{
        "message": "pong",
    })
}

注意
每次修改注释后, 都要执行 swag init , 然后再启动服务进行验证

swagger
0x04 后记

为什么要搞 golang?

最近线上发现在用java作计算密集型的操作时, 时间消耗有点大.
就想着是否要另外一种语言来作替代实现.
生命不息, 折腾不止, go起来

体验:

这一篇只是刚刚开始, 关于swagger 熟练使用, 还有很长路要走.
对比 java版的swagger, 感觉java的好像更简单一点?
不不不, 只是自己还没熟练吧, 哈哈

上一篇下一篇

猜你喜欢

热点阅读