Go语言Gin框架基础知识代码示例(1) | 青训营笔记

78 阅读1分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天

  • 此文章只包括Gin框架路由的某些基础用法
package main

import (
   "fmt"
   "github.com/gin-gonic/gin"
   "net/http"
)

//func

func main() {
   fmt.Println("Hello")
   /**
   gin.Default()里面调用了gin.New();在调用完gin.New()得到Engine 实例后,还调用了engine.Use(Logger(), Recovery());gin.Default()获取到的Engine 实例集成了Logger 和 Recovery 中间件
   New 返回一个新的空白 Engine 实例,没有附加任何中间件。
   */
   //Default返回一个Engin指针
   route := gin.Default()
   /**
   这个方法两个参数,一个是相对路径,一个是多个handler,即针对用户一个请求地址,我可以指定多个handler来处理用户请求。但是一般情况下我们都是一个handler处理一个请求。
   */
   route.GET("/Hello", func(context *gin.Context) {
      /**
      这个方法有两个参数,第一个是状态,第二个是结果。我这里直接指定200,表示成功,或者也可以用http包的常量值http.StatusOK;gin.H其实是一个map的数据结构即为map[string]interface{},然后将其转成json格式输出。
      */
      context.JSON(200, gin.H{
         "message": "Hello World FUCK YOU!",
      })

   })
   //':'表示匹配至下一个"/"内的参数   "*"表示匹配剩下所有参数
   route.GET("/user/:name/*pwd", func(context *gin.Context) {
      fmt.Println("Hello!")
      fmt.Println(context.Params)
      fmt.Println(context.Param("pwd"))
   })

   route.GET("/userInfo", func(context *gin.Context) {
      //通过Query方法获取URL参数
      Info := context.Query("Info")
      fmt.Println(Info)
      //GetQuery方法返回URL参数,并且附带一个bool值,若参数存在则为true,不存在为false
      fmt.Println(context.GetQuery("Info"))
   })

   route.POST("/form", func(context *gin.Context) {
      username := context.PostForm("UserName")
      userpassword := context.PostForm("UserPwd")

      fmt.Println(">>>>>>>>>>>>>>>>>>>>>>>>>>>")

      fmt.Println(username)
      fmt.Println(userpassword)
      //DefaultPostForm returns the specified key from a POST urlencoded form or multipart form when it exists, otherwise it returns the specified defaultValue string.
      username2 := context.DefaultPostForm("type", "post")
      fmt.Println(username2)

      fmt.Println(">>>>>>>>>>>>>>>>>>>>>>>>>>>")
   })

   //路由拆分

   route.GET("test", sayHI)
   route.Run()

   //路由分组
   group1 := route.Group("g1")
   {
      group1.GET("sayHello", sayHello)
      group1.GET("sayWelcome", sayWelcome)
   }
}

// 拆分出来
func sayHI(ctx *gin.Context) {
   ctx.JSON(http.StatusOK, gin.H{
      "msg": "HI",
   })
}

func sayHello(ctx *gin.Context) {
   ctx.JSON(http.StatusOK, gin.H{
      "msg": "Hello",
   })
}

func sayWelcome(ctx *gin.Context) {
   ctx.String(200, fmt.Sprintln("Welcome"))
}

参考文章1->

参考文章2->