最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go語言使用Gin處理路由參數(shù)和查詢參數(shù)

 更新時(shí)間:2025年08月14日 08:21:03   作者:程序員愛釣魚  
在 Web API 開發(fā)中,處理?路由參數(shù)(Path Parameter) ?和?查詢參數(shù)(Query Parameter) ?是非常常見的需求,下面我們就來看看Go語言如何使用Gin 框架處理路由參數(shù)和查詢參數(shù)吧

在 Web API 開發(fā)中,處理 路由參數(shù)(Path Parameter)  和 查詢參數(shù)(Query Parameter)  是非常常見的需求。

Go 語言的 Gin 框架在這方面提供了簡潔的 API,讓你輕松獲取和使用這些參數(shù)。

本文將通過一個(gè)完整的例子,帶你掌握 Gin 中這兩類參數(shù)的用法。

一、路由參數(shù) vs 查詢參數(shù)

1. 路由參數(shù)(Path Parameter)

出現(xiàn)在 URL 路徑中

通常用于標(biāo)識(shí)資源 ID

例如:

GET /users/123

這里 123 就是路由參數(shù) id。

2. 查詢參數(shù)(Query Parameter)

出現(xiàn)在 ? 后面,以 & 分隔

用于過濾、分頁等非資源唯一標(biāo)識(shí)的情況

例如:

GET /search?keyword=gin&page=2

二、Gin 獲取路由參數(shù)和查詢參數(shù)

Gin 通過 :param 定義路由參數(shù),通過 c.Param() 獲?。?/p>

查詢參數(shù)可以用 c.Query() 或 c.DefaultQuery() 獲取。

三、示例代碼

package main

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

func main() {
    r := gin.Default()

    // 路由參數(shù)示例
    r.GET("/users/:id", func(c *gin.Context) {
        id := c.Param("id")
        c.JSON(http.StatusOK, gin.H{
            "user_id": id,
        })
    })

    // 查詢參數(shù)示例
    r.GET("/search", func(c *gin.Context) {
        keyword := c.Query("keyword")           // 沒有默認(rèn)值
        page := c.DefaultQuery("page", "1")     // 默認(rèn)值為 1
        c.JSON(http.StatusOK, gin.H{
            "keyword": keyword,
            "page":    page,
        })
    })

    // 組合使用
    r.GET("/articles/:category", func(c *gin.Context) {
        category := c.Param("category")
        page := c.DefaultQuery("page", "1")
        c.JSON(http.StatusOK, gin.H{
            "category": category,
            "page":     page,
        })
    })

    r.Run(":8080")
}

四、運(yùn)行與測試

啟動(dòng)服務(wù):

go run main.go

1. 測試路由參數(shù)

curl http://localhost:8080/users/42

返回:

{"user_id":"42"}

2. 測試查詢參數(shù)

curl "http://localhost:8080/search?keyword=gin&page=2"

返回:

{"keyword":"gin","page":"2"}

3. 路由參數(shù) + 查詢參數(shù)

curl "http://localhost:8080/articles/golang?page=3"

返回:

{"category":"golang","page":"3"}

五、注意事項(xiàng)

1. 參數(shù)類型

Gin 獲取到的參數(shù)是字符串,如果需要整數(shù)或浮點(diǎn)數(shù),需要手動(dòng)轉(zhuǎn)換:

pageNum, err := strconv.Atoi(c.DefaultQuery("page", "1"))

2. 路由沖突

如果有多個(gè)類似 /users/:id 的路由,注意避免與靜態(tài)路由沖突,比如 /users/list 可能會(huì)被解析成 id=list。

3. 默認(rèn)值

查詢參數(shù)建議用 c.DefaultQuery() 設(shè)置默認(rèn)值,避免出現(xiàn)空字符串或 nil。

六、總結(jié)

通過 Gin,我們可以非常簡潔地處理:

  • 路由參數(shù):c.Param("name")
  • 查詢參數(shù):c.Query("key") / c.DefaultQuery("key", "default")

在實(shí)際項(xiàng)目中,你可以將參數(shù)解析和驗(yàn)證抽取成中間件,提升代碼可維護(hù)性。

到此這篇關(guān)于Go語言使用Gin處理路由參數(shù)和查詢參數(shù)的文章就介紹到這了,更多相關(guān)Go處理路由參數(shù)和查詢參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用go語言實(shí)現(xiàn)Redis持久化的示例代碼

    使用go語言實(shí)現(xiàn)Redis持久化的示例代碼

    redis 是一個(gè)內(nèi)存數(shù)據(jù)庫,如果你把進(jìn)程殺掉,那么里面存儲(chǔ)的數(shù)據(jù)都會(huì)消失,那么這篇文章就是來解決 redis 持久化的問題,本文給大家介紹了使用go語言實(shí)現(xiàn)Redis持久化,需要的朋友可以參考下
    2024-07-07
  • Go等待協(xié)程之WaitGroup使用與避坑指南

    Go等待協(xié)程之WaitGroup使用與避坑指南

    在Go并發(fā)編程中,goroutine非常輕量,但如何優(yōu)雅地等待多個(gè)協(xié)程執(zhí)行完成,才是工程實(shí)踐中的關(guān)鍵問題,很多人第一反應(yīng)是用 channel,但其實(shí)sync.WaitGroup才是更合適的工具,這篇文章不僅講用法,還會(huì)帶你深入理解WaitGroup的本質(zhì)、實(shí)現(xiàn)機(jī)制,需要的朋友可以參考下
    2026-04-04
  • Golang并發(fā)操作中常見的讀寫鎖詳析

    Golang并發(fā)操作中常見的讀寫鎖詳析

    Golang中的鎖機(jī)制主要包含互斥鎖和讀寫鎖互斥鎖互斥鎖是傳統(tǒng)并發(fā)程序?qū)蚕碣Y源進(jìn)行控制訪問的主要手段,這篇文章主要給大家介紹了關(guān)于Golang并發(fā)操作中常見的讀寫鎖的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • 使用Golang調(diào)用攝像頭并進(jìn)行圖像處理

    使用Golang調(diào)用攝像頭并進(jìn)行圖像處理

    近年來,攝像頭成為了我們生活中不可或缺的設(shè)備之一,從智能手機(jī)到安全監(jiān)控系統(tǒng),無處不在的攝像頭給我們帶來了便利和安全,在開發(fā)攝像頭相關(guān)的應(yīng)用程序時(shí),選擇一種高效和易用的編程語言是非常重要的,本文將介紹如何使用Golang調(diào)用攝像頭并進(jìn)行圖像處理
    2023-11-11
  • Golang使用Gin框架實(shí)現(xiàn)http分塊傳輸

    Golang使用Gin框架實(shí)現(xiàn)http分塊傳輸

    這篇文章主要為大家詳細(xì)介紹了Golang中如何使用Gin框架實(shí)現(xiàn)http分塊傳輸功能,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的可以參考一下
    2023-05-05
  • 詳解如何使用go-acme/lego實(shí)現(xiàn)自動(dòng)簽發(fā)證書

    詳解如何使用go-acme/lego實(shí)現(xiàn)自動(dòng)簽發(fā)證書

    這篇文章主要為大家詳細(xì)介紹了如何使用?go-acme/lego?的客戶端或庫完成證書的自動(dòng)簽發(fā),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • 深入了解Golang中的格式化輸出

    深入了解Golang中的格式化輸出

    fmt是Go語言中用于控制文本輸出的常用標(biāo)準(zhǔn)庫,文中將通過示例詳細(xì)講解一下Go語言中不同形式的格式化輸出,感興趣的小伙伴可以了解一下
    2022-11-11
  • go-zero熔斷機(jī)制組件Breaker接口定義使用解析

    go-zero熔斷機(jī)制組件Breaker接口定義使用解析

    這篇文章主要為大家介紹了go-zero熔斷機(jī)制組件Breaker接口定義使用解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • go mod私有倉庫配置小結(jié)

    go mod私有倉庫配置小結(jié)

    Go語言私有倉庫通常指的是那些不在公共倉庫如GitHub上的倉庫,本文主要介紹了go mod私有倉庫配置,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-03-03
  • Go語言中l(wèi)og日志庫的介紹

    Go語言中l(wèi)og日志庫的介紹

    本文給大家介紹Go語言中l(wèi)og日志庫的概念使用技巧,log包定義了Logger類型,該類型提供了一些格式化輸出的方法,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-10-10

最新評(píng)論

南陵县| 仁寿县| 奉节县| 江川县| 博乐市| 寿阳县| 平陆县| 民勤县| 乌兰县| 塘沽区| 东城区| 清水河县| 达拉特旗| 靖州| 关岭| 富民县| 西充县| 漳州市| 怀远县| 博客| 峨眉山市| 泰安市| 阳泉市| 桑日县| 宁海县| 越西县| 兴隆县| 沅江市| 都安| 嵩明县| 鸡泽县| 宾阳县| 朔州市| 襄城县| 噶尔县| 溧水县| 腾冲县| 特克斯县| 儋州市| 德钦县| 托克逊县|