Go语言中文文档:
官方文档:
官方文档作为补充知识来用,具体搭建看下面。
1、打开终端
先检测自己的go语言版本
go version
我的是1.18完全可以使用。
说是有两种方法,我们采用最好的—— Go Module方法
然后在进行下面的步骤:
(1)找到Go的安装位置(找不到的想办法搜一下)。打开src文件夹:
创建一个新文件,gin-demo
在打开此文件夹创建新文件,basic
输入指令:
go mod init gin-demo/basic
输入指令:
go get -u github.com/gin-gonic/gin
试了好多次,下不了,说明什么?被墙了!
只能换国内源下了:
第一步:第一步:关闭GOSUMDB 。
因为go在1.13版本后,默认开启了GOSUMDB=sum.golang.org,而这个网址sum.golang.org 在国内是无法访问,故需要关闭。
输入指令:
go env -w GOSUMDB=off
第二步:更换国内源
彻底解决配置代理也无法下载个别包的问题。
指令1:
go env -w GO111MODULE=on
指令2:
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct
接下来再输入指令,下载gin 。
go get github.com/gin-gonic/gin
不到五秒,问题解决了。
下载示例到本地:
curl https://raw.githubusercontent.com/gin-gonic/examples/master/basic/main.go > main.go
显示获取失败?
打开main.go自己把代码复制粘贴即可。
package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
// 通过字典模拟 DB
var db = make(map[string]string)
func setupRouter() *gin.Engine {
// 初始化 Gin 框架默认实例,该实例包含了路由、中间件以及配置信息
r := gin.Default()
// Ping 测试路由
r.GET("/hi", func(c *gin.Context) {
c.String(http.StatusOK, "hello world!")
})
// 获取用户数据路由
r.GET("/user/:name", func(c *gin.Context) {
user := c.Params.ByName("name")
value, ok := db[user]
if ok {
c.JSON(http.StatusOK, gin.H{"user": user, "value": value})
} else {
c.JSON(http.StatusOK, gin.H{"user": user, "status": "no value"})
}
})
// 需要 HTTP 基本授权认证的子路由群组设置
authorized := r.Group("/", gin.BasicAuth(gin.Accounts{
"foo": "bar", // 用户名:foo 密码:bar
"manu": "123", // 用户名:manu 密码:123
}))
// 保存用户信息路由
authorized.POST("admin", func(c *gin.Context) {
user := c.MustGet(gin.AuthUserKey).(string)
// 解析并验证 JSON 格式请求数据
var json struct {
Value string `json:"value" binding:"required"`
}
if c.Bind(&json) == nil {
db[user] = json.Value
c.JSON(http.StatusOK, gin.H{"status": "ok"})
}
})
return r
}
func main() {
// 设置路由信息
r := setupRouter()
// 启动服务器并监听 8080 端口
r.Run(":8080")
}
再次运行:
go run main.go
点击允许:
可以看到 HTTP 服务器已经启动成功(默认以“debug”模式启动),并且打印出了路由信息。
我们可以打开网址,进行交互:
main.go
我不是什么大佬,我只是站在巨人的肩膀上看风景罢了。
参考文章: