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

相关文章

vue监听属性watch的用法及使用场景详解

《vue监听属性watch的用法及使用场景详解》watch是vue中常用的监听器,它主要用于侦听数据的变化,在数据发生变化的时候执行一些操作,:本文主要介绍vue监听属性watch的用法及使用场景... 目录1. 监听属性 watch2. 常规用法3. 监听对象和route变化4. 使用场景附Watch 的

nodejs打包作为公共包使用的完整流程

《nodejs打包作为公共包使用的完整流程》在Node.js项目中,打包和部署是发布应用的关键步骤,:本文主要介绍nodejs打包作为公共包使用的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言一、前置准备二、创建与编码三、一键构建四、本地“白嫖”测试(可选)五、发布公共包六、常见踩坑提醒

在Node.js中使用.env文件管理环境变量的全过程

《在Node.js中使用.env文件管理环境变量的全过程》Node.js应用程序通常依赖于环境变量来管理敏感信息或配置设置,.env文件已经成为一种流行的本地管理这些变量的方法,本文将探讨.env文件... 目录引言为什么使php用 .env 文件 ?如何在 Node.js 中使用 .env 文件最佳实践引

MyBatis Plus大数据量查询慢原因分析及解决

《MyBatisPlus大数据量查询慢原因分析及解决》大数据量查询慢常因全表扫描、分页不当、索引缺失、内存占用高及ORM开销,优化措施包括分页查询、流式读取、SQL优化、批处理、多数据源、结果集二次... 目录大数据量查询慢的常见原因优化方案高级方案配置调优监控与诊断总结大数据量查询慢的常见原因MyBAT

Vue实现路由守卫的示例代码

《Vue实现路由守卫的示例代码》Vue路由守卫是控制页面导航的钩子函数,主要用于鉴权、数据预加载等场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、概念二、类型三、实战一、概念路由守卫(Navigation Guards)本质上就是 在路

分析 Java Stream 的 peek使用实践与副作用处理方案

《分析JavaStream的peek使用实践与副作用处理方案》StreamAPI的peek操作是中间操作,用于观察元素但不终止流,其副作用风险包括线程安全、顺序混乱及性能问题,合理使用场景有限... 目录一、peek 操作的本质:有状态的中间操作二、副作用的定义与风险场景1. 并行流下的线程安全问题2. 顺

Java JDK Validation 注解解析与使用方法验证

《JavaJDKValidation注解解析与使用方法验证》JakartaValidation提供了一种声明式、标准化的方式来验证Java对象,与框架无关,可以方便地集成到各种Java应用中,... 目录核心概念1. 主要注解基本约束注解其他常用注解2. 核心接口使用方法1. 基本使用添加依赖 (Maven

python依赖管理工具UV的安装和使用教程

《python依赖管理工具UV的安装和使用教程》UV是一个用Rust编写的Python包安装和依赖管理工具,比传统工具(如pip)有着更快、更高效的体验,:本文主要介绍python依赖管理工具UV... 目录前言一、命令安装uv二、手动编译安装2.1在archlinux安装uv的依赖工具2.2从github

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型

C++读写word文档(.docx)DuckX库的使用详解

《C++读写word文档(.docx)DuckX库的使用详解》DuckX是C++库,用于创建/编辑.docx文件,支持读取文档、添加段落/片段、编辑表格,解决中文乱码需更改编码方案,进阶功能含文本替换... 目录一、基本用法1. 读取文档3. 添加段落4. 添加片段3. 编辑表格二、进阶用法1. 文本替换2