概述

我想实现一个开箱即用的 API 框架的轮子,这个轮子是基于 Gin 基础上开发的。

为什么是开箱即用,它会集成哪些功能?

以上功能点,都是常用的,后期可能还会增加。

废话不多说,咱们开始吧。

创建一个项目,咱们首先要考虑一个依赖包的管理工具。

常见的包管理有,dep、go vendor、glide、go modules 等。

最开始,使用过 dep,当时被朋友 diss 了,推荐我使用 go modules 。

现在来说一下 go modules ,这个是随着 Go 1.11 的发布和我们见面的,这是官方提倡的新的包管理。

说一个环境变量:GO111MODULE,默认值为 auto 。

当项目中有 go.mod 时,使用 go modules 管理,反之使用 旧的 GOPATH 和 vendor机制。

如果就想使用 go modules ,可以将 GO111MODULE 设置为 on 。

直接上手吧。

初始化

咱们在 GOPATH 之外的地方,新建一个空文件夹 go-gin-api 。

cd go-gin-api && go mod init go-gin-api

输出:

go: creating new go.mod: module go-gin-api

这时目录中多一个 go.mod 文件,内容如下:

 module go-gin-api
go 1.12

到这,go mod 初始化就完成,接下来添加依赖包 - gin。

添加依赖包

在目录中创建一个 main.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
}

这里我还准备了一分学习图和资料,如下:

链接:https://pan.baidu.com/s/1v5gm7n0L7TGyejCmQrMh2g 提取码:x2p5

免费分享,但是X度限制严重,如若链接失效点击链接或搜索加群 群号518475424

这代码没什么特别的,就是官方的入门Demo。

接下来,开始下载依赖包。

go mod tidy

执行完成后,看一下 go.mod 文件:

    module go-gin-api
go 1.12
require github.com/gin-gonic/gin v1.4.0

这时,看到新增一个 gin v1.4.0 的包。

还生成了一个 go.sum 的文件,这个文件可以暂时先不管。

这时发现了 2 个问题。

1、目录中没发现 gin 包,包下载到哪了?

下载到了 GOPATH/pkg/mod 目录中。

2、GoLand 编辑器中关于 Gin 的引用变红了?

在这里编辑器需要设置一下,如图:

点击 Apply 和 OK 即可。

如果这招不灵,还可以执行:

go mod vendor

这个命令是将项目依赖的包,放到项目的 vendor 目录中,这肯定就可以了。

go mod 命令

go mod tidy

拉取缺少的模块,移除不用的模块。

我常用这个命令。

go mod vendor

将依赖复制到vendor下。

我常用这个命令。

go mod download

下载依赖包。

go mod verify

检验依赖。

go mod graph

打印模块依赖图。

其他命令,可以执行 go mod ,查看即可。

小结

这篇文章,分享了 go modules 的使用。

使用 go modules 从零搭建一个项目。

GoLand 编辑器使用 go modules。

今天就到这了,下一篇文章开始搭建 API 项目了,写参数验证。

最新文章

  1. 使用xpath的轴(Axis)进行元素定位
  2. labview 变体数据类型
  3. WordPress 后台禁用Google Open Sans字体,加速网站
  4. 网站优化的经验和技巧--精简高效的C#
  5. FoxOne---一个快速高效的BS框架--WEB控件属性编辑器
  6. 【转】如何检测wifi信号强度? -- 不错
  7. NPOI以及在ASP.NET MVC中的使用
  8. Redis学习-持久化
  9. Zookeeper 笔记-角色
  10. 15 ActionBar.Tab 以及保存fragment对象 代码案例
  11. 【C#】【对象转XML】xml序列化
  12. ubuntu16.04 服务器允许远程连接
  13. BZOJ4223 : Tourists
  14. arch 相关软件及脚本
  15. c# Newtonsoft.Json封装
  16. java.util.ConcurrentModificationException的解决办法
  17. mysql之表的查看操作
  18. Java访问权限控制
  19. linux apache下虚拟主机配置方法
  20. Android 自动化测试 robotium

热门文章

  1. Asp.Net或WebAPI获取表单数据流(批量文件上传)
  2. 【设计模式】Singleton
  3. jQuery遍历 - 过滤first(),last()和eq()使用
  4. 命令 docker rm | docker rmi | docker prune 的差异
  5. Excel解析工具easyexcel全面探索
  6. SharpGL之Viewport
  7. 英语rhodita铑金RHODITA单词
  8. 信号量(Posix)
  9. Linux驱动开发常用调试工具---之内存读写工具devmem和devkmem【转】
  10. JS高阶---执行上下文栈