Golang微框架——Gin——“Hello World”

Go语言中文文档:

简介 · Go语言中文文档 (topgoer.com)g

官方文档:

快速入门|杜松子酒网络框架 (gin-gonic.com)

官方文档作为补充知识来用,具体搭建看下面。

Gin 快速入门 | 快速入门 | Gin 使用教程 (laravelacademy.org)

1、打开终端

先检测自己的go语言版本

go version

 我的是1.18完全可以使用。

 说是有两种方法,我们采用最好的—— Go Module方法

提前准备好:Go语言-“Hello World”_代码骑士的博客-CSDN博客_go语言hello word

然后在进行下面的步骤:

 (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”模式启动),并且打印出了路由信息。

 我们可以打开网址,进行交互:

localhost:8080/hi

localhost:8080/user/codeknight

  

 作为最基本的演示项目,你可以参考上述 main.go 的实现自定义自己的 HTTP 服务器和路由实现。

我不是什么大佬,我只是站在巨人的肩膀上看风景罢了。

参考文章:

Gin 快速入门 | 快速入门 | Gin 使用教程 (laravelacademy.org)

go get 命令下载gin包时出现报错 - 小鹰展翅 - 博客园 (cnblogs.com)

猜你喜欢

转载自blog.csdn.net/qq_51701007/article/details/124934130