人生苦短,我用 Golang--Gin 框架(二)

 web 開發肯定免不了接收用戶輸入的參數,然後針對不同的參數做不同的邏輯處理。所以,今天我們就一起來看下 gin 框架怎麼獲取用戶參數

web 服務中,我們經常需要對用戶輸入的參數進行獲取,然後進行相應的操作。所以,獲取用戶的參數是必不可少的。上一篇文章中(人生苦短,我用 Golang--Gin 框架(一)),我們初步認識了 gin 框架,今天我們繼續學下 gin 框架中怎麼獲取用戶參數。

接收用戶參數通常有三種方式,分別是 url 參數、表單參數和 api 參數。接下來,我們就這三種接收參數的方式,分別來簡單看下 gin 框架的獲取方法。

01

gin 框架接收 url 參數可以通過 Query() 來獲取,例如

import (
  "demo/src/main/router"
  "github.com/gin-gonic/gin"
  "io"
  "net/http"
  "os"
)
func main()  {
  // 關閉控制檯日誌顏色
  gin.DisableConsoleColor()
  // 配置日誌輸出目錄
  f, _ := os.Create("go.log")
  gin.DefaultWriter = io.MultiWriter(f, os.Stdout)
  r := gin.New()
  // 使用log中間件
  r.Use(gin.Logger())
  r.GET("/hello", func(c *gin.Context) {
    // 這裏通過Query()方法來獲取鍵爲name的值
    n := c.Query("name")
    c.JSON(http.StatusOK, gin.H{
      "flag": true,
      "msg": "hello " + n,
    })
  })
  r.Run(":81")
}

現在我們發送 get 請求 http://localhost:81/hello?name=muqing,可得到下面結果。

圖片

post 請求,同上,只需要將 r.GET 改爲 r.POST 即可,這裏就先不做演示啦。

02

表單參數

gin 框架通過 PostForm() 方法來獲取表單參數,例如

import (
  "demo/src/main/router"
  "github.com/gin-gonic/gin"
  "io"
  "net/http"
  "os"
)
func main()  {
  // 關閉控制檯日誌顏色
  gin.DisableConsoleColor()
  // 配置日誌輸出目錄
  f, _ := os.Create("go.log")
  gin.DefaultWriter = io.MultiWriter(f, os.Stdout)
  r := gin.New()
  // 使用log中間件
  r.Use(gin.Logger())
  // 這裏需要換成post請求
  r.POST("/hello", func(c *gin.Context) {
    // 這裏通過PostForm()方法來獲取鍵爲name的值
    n := c.PostForm("name")
    c.JSON(http.StatusOK, gin.H{
      "flag": true,
      "msg": "hello " + n,
    })
  })
  r.Run(":81")
}

接下來,我們用發起一個表單請求試試,用 goland 自帶工具即可。

圖片

運行上面的請求後,可得到以下結果。

圖片

03

API 參數

gin 框架通過 Param() 方法來獲取 api 參數,例如

import (
  "demo/src/main/router"
  "github.com/gin-gonic/gin"
  "io"
  "net/http"
  "os"
)
func main()  {
  // 關閉控制檯日誌顏色
  gin.DisableConsoleColor()
  // 配置日誌輸出目錄
  f, _ := os.Create("go.log")
  gin.DefaultWriter = io.MultiWriter(f, os.Stdout)
  r := gin.New()
  // 使用log中間件
  r.Use(gin.Logger())
  // api參數鍵需要前面加:
  r.POST("/hello/:name", func(c *gin.Context) {
    // 通過Param()方法來獲取api參數
    n := c.Param("name")
    c.JSON(http.StatusOK, gin.H{
      "flag": true,
      "msg": "hello " + n,
    })
  })
  r.Run(":81")
}

現在我們發送 POST 請求 http://localhost:81/hello/muqing,可以得到以下結果。

今天的分享就先到這裏啦。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/Mx9EzVwjbgBxODxjrPmjcA