简介 目录 评价 推荐
  • 精慕门0267096 2023-03-24

    点,可以得到struct /map里的值

    0赞 · 0采集
  • 害羞的西红柿 2022-04-04

    curl -X GET http://127.0.0.1:8080/api/hello

    0赞 · 0采集
  • 害羞的西红柿 2022-04-04

    #出事换环境

    https://beego.gocn.vip/beego/zh/developing/bee/env.html

    #go语言安装主根目录

    export GOROOT=/usr/local/go   

    #替换你的目录#GOPATH 是自己的go项目路径,自定义设置export GOPATH=/Users/ding/go_workspace #替换你的目录#GOBIN 当我们使用go install命令编译后并且安装的二进制程序目录export GOBIN=$GOPATH/bin# 启用 Go Modules 功能export GO111MODULE=on# 配置 GOPROXY 环境变量。你可以换成你喜欢的 proxyexport GOPROXY=https://goproxy.cn,direct# 加入环境变量中export PATH=$PATH:$GOROOT/bin:$GOBIN

    # 创建文件夹

    mkdir  -p  $GOPAH/src/github.com/rupid/learn-gin

    # 进入learn-gin文件夹

    cd $_


    # 初始化mod

    go mod init

    # 拉去gin的模块

    go  get  -v github.com/gin-gonic/gin@v1.7


    0赞 · 0采集
  • qq_阿飞_3 2022-03-09

    待了解的前置知识:

    - go基本语法

    - go写成基本知识


    开发工具

    - goland

    0赞 · 0采集
  • 缘灭沉沦 2021-09-23

    老师是在liunx下教学的,windows的命令行更改如下

    mkdir -p $GOPATH/src/github.com/e421083458/gin_test_project
    换成
    mkdir -p $env:GOPATH/src/github.com/e421083458/gin_test_project
    export GO111MODULE=on
    换成
    go env -w GO111MODULE=on

    这个on不能是大写,而且只有on,off,auto
    如果设置错了值,可以看这篇文章
    windows错误设置GO111MODULE报错解决

    设置好GO111MODULE之后,可以设置代理,下载速度会快一点

    go env -w GOPROXY=https://goproxy.cn,direct
    0赞 · 0采集
  • 程序小工 2021-08-31

    自动申请证书

    autotls.Run(r, "域名")

    流程:

    1、生成本地密钥

    2、发送密钥到证书颁发机构 => 获取私钥

    3、私钥验证,验证后保存,下次请求用私钥加密 => 自动下载证书

    0赞 · 0采集
  • 程序小工 2021-08-31


    1、加载模板文件

    r.LoadHTMLGlob("template/*")

    2、处理模板数据

    c.HTML(200, "index.html", gin.H{
        "title": "test_gin_template"
    })
    0赞 · 0采集
  • 程序小工 2021-08-30

    package mainimport (   "context"
       "github.com/gin-gonic/gin"
       "log"
       "net/http"
       "os"
       "os/signal"
       "syscall"
       "time")func main()  {
       r := gin.Default()
       r.GET("/other_shutdown", func(c *gin.Context) {
          time.Sleep(10*time.Second)
          c.String(200, "test other shutdown")
       })
    
       srv := &http.Server{
          Addr: ":8085",
          Handler: r,
       }   go func() {      if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
             log.Fatalf("listen:%s\n", err)
          }
       }()
    
       quit := make(chan os.Signal)
       signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
       <-quit
       log.Println("shutdown server...")
    
       ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)   defer cancel()   if err := srv.Shutdown(ctx); err != nil {
          log.Fatal("server shutdown:", err)
       }
    
       log.Println("server exiting")
    }


    1、时间库使用

    time.Sleep(10*time.Second) // 表示等待10秒

    2、使用http.Server 构建server

    srv := &http.Server{
      // 地址
      Addr: ":8085",
      Handler: r,
    }

    3、goroutine创建协程并使用

    go func() {   
      if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {  
      }
    }()

    4、信号 os.Signal - 请求拦截

    quit := make(chan os.Signal)
    // 捕获 ctrl+c 和 kill -15 终止两类, kill -9捕获不到
    signal.Notify(quit, syscall.S IGINT, syscall.SIGTERM)
    // 阻塞channel
    <-quit

    5、设置超时的上下文

    ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)

    6、defer

    7、执行关闭服务器

    srv.Shutdown(ctx)
    0赞 · 0采集
  • 程序小工 2021-08-29
    package main
    
    import (
       "fmt"
       "github.com/gin-gonic/gin"
       "net/http"
    )
    
    func IPAuthMiddleware() gin.HandlerFunc {
       return func(c *gin.Context) {
          ipList := []string{
             "127.0.0.2",
          }
          flag := false
          clientIP := c.ClientIP()
          for _, ip := range ipList {
             if ip == clientIP {
                flag = true
                break
             }
          }
          if !flag {
             c.String(http.StatusUnauthorized, "%s not in ip list", clientIP)
             c.Abort()
          }
       }
    }
    func main()  {
    
       r := gin.Default()
       r.Use(IPAuthMiddleware())
       
       r.GET("whitelist_middleware_gin", func(c *gin.Context) {
          c.String(200, c.ClientIP())
       })
       
       err := r.Run()
       if err != nil {
          fmt.Println(err)
       }
    }

    1、ip数组初始化:

    ipList := []string{
        "127.0.0.2",
    }


    2、获取客户端ip

    c.ClientIP()


    3、自定义中间件:

    3.1 定义中间件方法
    func IPAuthMiddleware() gin.HandlerFunc {
       return func(c *gin.Context) {
         
       }
    }
    
    3.2 使用中间件
    r.Use(IPAuthMiddleware())


    4、中间件校验不通过直接退出

    c.Abort() // 不终止退出的话,会继续调用接口,输出接口内容,与中间件检验拦截目的不符
    0赞 · 0采集
  • 程序小工 2021-08-28
    package main
    
    import (
       "bytes"
       "fmt"
       "github.com/gin-gonic/gin"
       "io/ioutil"
       "net/http"
    )
    
    func main()  {
       r := gin.Default()
       r.POST("/test", func(c *gin.Context) {
          bodyBytes, err := ioutil.ReadAll(c.Request.Body)
    
          if err != nil {
             c.String(http.StatusBadRequest, err.Error())
             c.Abort()
          }
    
          c.Request.Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytes))
          name := c.PostForm("name")
          c.String(http.StatusOK, "%s, %s", name, string(bodyBytes))
       })
    
       err := r.Run()
       if err != nil {
          fmt.Println(err)
       }
    }



    curl -X POST "http://127.0.0.1:8080/test" -d "name=zqunor"

    虽然能实现,但是感觉回传不是个好方案。

    0赞 · 0采集
  • 慕粉3452859 2021-08-07

    c.ShouldBind();百年规定结构体

    0赞 · 0采集
  • 慕粉3452859 2021-08-07

    c.Query("test","默认值");//获取url参数

    0赞 · 0采集
  • 宝宝金 2021-05-11

    获取参数

    0赞 · 0采集
  • mtr2014 2020-11-18

    自定义验证规则4

    截图
    0赞 · 0采集
  • mtr2014 2020-11-18

    自定义验证规则3

    截图
    0赞 · 0采集
  • mtr2014 2020-11-18

    自定义验证规则2

    截图
    0赞 · 0采集
  • mtr2014 2020-11-18

    自定义验证规则1

    截图
    0赞 · 1采集
  • mtr2014 2020-11-18

    结构体验证

    截图
    0赞 · 0采集
  • mtr2014 2020-11-17

    获取body内容

    截图
    0赞 · 0采集
  • mtr2014 2020-11-17

    获取请求参数

    截图
    0赞 · 0采集
  • mtr2014 2020-11-17

    请求路由泛绑定~

    截图
    0赞 · 0采集
  • mtr2014 2020-11-17

    设置静态资源

    截图
    0赞 · 0采集
  • mtr2014 2020-11-17

    路径带参数 uri

    截图
    0赞 · 0采集
  • Ganjr 2020-11-06

    优雅关停!

    截图
    0赞 · 0采集
  • Ganjr 2020-11-06

    其他补充

    • 优雅关停

    • 模板渲染

    • 自动证书配置


    0赞 · 0采集
  • Ganjr 2020-11-06

    中间件

    • 使用 gin 中间件

    • 自定义 ip 白名单中间件


    0赞 · 0采集
  • Ganjr 2020-11-05

    获取请求参数

    • 获取 GET 请求参数

    • 获取 POST 请求参数

    • 获取 Body

    • 获取参数绑定结构体


    0赞 · 0采集
  • Ganjr 2020-11-05

    开发环境准备

    • golang 1.12

    • gin 1.4.0

    • goland


    0赞 · 0采集
  • 慕斯1088534 2020-11-03

    期待有更详细的课程,赞赞赞!!!

    0赞 · 0采集
  • 阿里小卫 2020-11-02

    gin路由的写法就是比较爽

    截图
    0赞 · 0采集
数据加载中...
开始学习 免费