Go语言使用Gin处理路由参数和查询参数

2025-08-14 10:50

本文主要是介绍Go语言使用Gin处理路由参数和查询参数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言...

在 Web API 开发中,处理 路由参数(Path Parameter)  和 查询参数(Query Parameter)  是非常常见的需求。

Go 语言的 Gin 框架在这方面提供了简洁的 API,让你轻松获取和使用这些参数。

本文将通过一个完整的例子,带你掌握 Gin 中这两类参数的用法。

一、路由参数 vs 查询参数

1. 路由参数(Path Parameter)

出现在 URL 路径中

通常用于标识资源 ID

例如:

GEwww.chinasem.cnT /users/123

这里 123 就是路由参数 id

2. 查询参数(Query Parameter)

出现在 ? 后面,以 & 分隔

用于过滤、分页等非资源唯一标识的情况

例如:

GET /search?keyword=gin&page=2
编程

二、Gin 获取路由参数和查询参数

Gin 通过 :param 定义路由参数,通过 c.Param() 获取;

查询参数可以用 c.Query() 或 c.DefaultQuery() 获取。

三、示例代码

package main

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

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

    // 路由参数示例
    r.GET("/users/:id", func(c *gin.Context) {
        id := c.Param("id")
        c.jsON(http.StatusOK, gin.H{
            "user_id": id,
        })
    })

    // 查询参数示例
    r.GET("/search", func(c *gin.Context) {
        keyword := c.Query("keyword")           // 没有默认值
        page := c.DefaultQuery("page", "1")     // 默认值为 1
        c.JSON(http.StatusOK, gin.H{
            "keyword": keyword,
            "page":    page,
        })
    })

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

    r.Run(":8080")
}

四、运行与测试

启动服务:

go run main.go

1. 测试路由参数

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

返回:

{"user_id":"42"}

2. 测试查询参数

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

返回:

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

3. 路由参数 + 查询参数

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

返回:

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

五、注意事项

1. 参数类型

Gin 获取到的参数是字符串,如果需要整数或浮点数,需要手动转换:

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

2. 路由冲突

如果有多个类似 /users/:id 的路由,注意避免与静态路由冲突,比如 /users/list 可能会被解析成 id=list

3. 默认值

查询参数建议用 c.DefaultQuery() 设置默认值,避免出现空字符串或 nil。

六、总结

通过 Gin,我们可以非常简洁地处理:

  • 路由参数:c.Param("name"China编程;)
  • 查询参数:c.Query("key") / c.DefaultQuery("key", "default")

在实际项目中,你可以将参数解析和验证抽取成中间件,提升代码可维护性。

到此这篇关于Go语言使用Gin处理路由参数和查询参数的文章就介绍到这了,更多相关Go处理路由参数和查询参数内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!

这篇关于Go语言使用Gin处理路由参数和查询参数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1155731

相关文章

Python使用python-pptx自动化操作和生成PPT

《Python使用python-pptx自动化操作和生成PPT》这篇文章主要为大家详细介绍了如何使用python-pptx库实现PPT自动化,并提供实用的代码示例和应用场景,感兴趣的小伙伴可以跟随小编... 目录使用python-pptx操作PPT文档安装python-pptx基础概念创建新的PPT文档查看

C#和Unity中的中介者模式使用方式

《C#和Unity中的中介者模式使用方式》中介者模式通过中介者封装对象交互,降低耦合度,集中控制逻辑,适用于复杂系统组件交互场景,C#中可用事件、委托或MediatR实现,提升可维护性与灵活性... 目录C#中的中介者模式详解一、中介者模式的基本概念1. 定义2. 组成要素3. 模式结构二、中介者模式的特点

MySQL中优化CPU使用的详细指南

《MySQL中优化CPU使用的详细指南》优化MySQL的CPU使用可以显著提高数据库的性能和响应时间,本文为大家整理了一些优化CPU使用的方法,大家可以根据需要进行选择... 目录一、优化查询和索引1.1 优化查询语句1.2 创建和优化索引1.3 避免全表扫描二、调整mysql配置参数2.1 调整线程数2.

C#中SortedSet的具体使用

《C#中SortedSet的具体使用》SortedSet是.NETFramework4.0引入的一个泛型集合类,它实现了一个自动排序的集合,内部使用红黑树数据结构来维护元素的有序性,下面就来介绍一下如... 目录基础概念主要特性创建和初始化基本创建方式自定义比较器基本操作添加和删除元素查询操作范围查询集合运

MySQL 数据库表与查询操作实战案例

《MySQL数据库表与查询操作实战案例》本文将通过实际案例,详细介绍MySQL中数据库表的设计、数据插入以及常用的查询操作,帮助初学者快速上手,感兴趣的朋友跟随小编一起看看吧... 目录mysql 数据库表操作与查询实战案例项目一:产品相关数据库设计与创建一、数据库及表结构设计二、数据库与表的创建项目二:员

C# Opacity 不透明度的具体使用

《C#Opacity不透明度的具体使用》本文主要介绍了C#Opacity不透明度的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录WinFormsOpacity以下是一些使用Opacity属性的示例:设置窗体的透明度:设置按钮的透

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

Java异常捕获及处理方式详解

《Java异常捕获及处理方式详解》异常处理是Java编程中非常重要的一部分,它允许我们在程序运行时捕获并处理错误或不预期的行为,而不是让程序直接崩溃,本文将介绍Java中如何捕获异常,以及常用的异常处... 目录前言什么是异常?Java异常的基本语法解释:1. 捕获异常并处理示例1:捕获并处理单个异常解释:

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

在ASP.NET项目中如何使用C#生成二维码

《在ASP.NET项目中如何使用C#生成二维码》二维码(QRCode)已广泛应用于网址分享,支付链接等场景,本文将以ASP.NET为示例,演示如何实现输入文本/URL,生成二维码,在线显示与下载的完整... 目录创建前端页面(Index.cshtml)后端二维码生成逻辑(Index.cshtml.cs)总结