gin的占位符:和通配符*

news/2024/7/20 23:13:20 标签: gin, ios

1、用法

在 Gin 路由中,可以使用一个通配符(*)或一个占位符(:)来捕获 URL 的一部分。

	r.GET("/royal/:id", func(c *gin.Context) {
		id := c.Param("id")

		//fmt.Println("into :id")
		c.String(http.StatusOK, "into :id, id is: "+id)

	})

	r.GET("royal2/*name", func(c *gin.Context) {
		name := c.Param("name")

		//fmt.Println("into *name")
		c.String(http.StatusOK, "into *name, name is: "+name)
	})

在这里插入图片描述
在这里插入图片描述
通配符表示的整个路径,并且会加上/。
在这里插入图片描述
如果通配符什么都不带,则返回的是一个/。
占位符则是用来获取一个路径段的参数:
在这里插入图片描述
但如果是占位符后面再跟路由,会报404
在这里插入图片描述
占位符注册的路由以后,可以注册相同前缀的路由。
比如用占位符注册了/royal/:id,可以继续注册/royal/123,并且访问/royal/123会精确匹配注册的路由。

	r.GET("/royal/123", func(c *gin.Context) {
		//id := c.Param("id")

		//fmt.Println("into :id")
		c.String(http.StatusOK, "into /royal/123")

	})

在这里插入图片描述
但如果是通配符,则不可以,会报panic。

	r.GET("royal2/*name", func(c *gin.Context) {
		name := c.Param("name")

		//fmt.Println("into *name")
		c.String(http.StatusOK, "into *name, name is: "+name)
	})

在这里插入图片描述

2、连续占位符

同一个路由中,允许多个占位符。

	r.GET("/royal3/:id/123/:id", func(c *gin.Context) {
		id := c.Param("id")

		//fmt.Println("into :id")
		c.String(http.StatusOK, "/royal3/:id/123/:id"+", id is: "+id)

	})

在这里插入图片描述
查看源码发现,Param会匹配第一个相同的key,也就是第一个id。

3、连续通配符

	r.GET("royal5/*id/123/*name", func(c *gin.Context) {
		name := c.Param("name")
		id := c.Param("id")
		fmt.Println("into *name")
		c.String(http.StatusOK, "id is: "+id+", name is:"+name)
	})

连续通配符会panic
在这里插入图片描述

4、通配符与占位符的使用

同一路由中,通配符和占位符可以同时使用,但是占位符要在通配符的前面,否则会panic

	r.GET("/royal6/*name/:id", func(c *gin.Context) {
		id := c.Param("id")

		fmt.Println("into :id")
		c.String(http.StatusOK, "hello "+id)
	})

在这里插入图片描述

	r.GET("royal1/:id/*name", func(c *gin.Context) {
		name := c.Param("name")
		id := c.Param("id")
		fmt.Println("into *name")
		c.String(http.StatusOK, "id is: "+id+", name is:"+name)
	})

在这里插入图片描述


http://www.niftyadmin.cn/n/4931886.html

相关文章

C语言学习系列-->看淡指针(1)

文章目录 一、概述二、指针变量和地址2.1 取地址操作符2.2 指针变量和解引用操作符2.2.1 指针变量2.2.2 拆解指针类型2.2.4 解引用操作符 2.3 指针变量的大小 三、指针变量的意义3.1 指针的解引用指针-整数 四、 const修饰指针五、指针运算5.1 指针- 整数5.2 指针-指针5.3 指针…

8月11日deepin v23 Beta 阶段性内测更新

Deepin23内测6.4.7内核 功能新增 【终端】 终端光标风格设置中新增加粗下划线设置选项关闭窗口特效,终端应用多窗口时显示窗口标题名称对终端远程管理分组逻辑进行优化新增双击选中区域包含特殊符号选项新增ShiftCtrl鼠标滚轮调整终端透明度的快捷方式 【剪切板】 打…

ISO27701隐私信息管理体系简介

ISO27701是对ISO27001信息安全管理和ISO27002安全控制的隐私扩展,全称《安全技术—扩展ISO27001和ISO27002的隐私信息管理—要求与指南》,是ISO标准委员会以ISO 27001为基准,以ISO27552为蓝本,建立发布的隐私信息管理体系标准&…

在Excel中将数值差距极大的两个序列用对比明显的折线图表示

在Excel中,如果两个数据序列的数值差距太大,用这样的数据序列生成折线图时,折线图会显得过于平缓,趋势对比不明显。如下图: 这时候只要将趋势图设置成双坐标轴,将其中一条趋势线绘制到次坐标轴上&#xff0…

029 - integer types 整数类型

MySQL支持SQL标准整数类型 INTEGER(或INT)和 SMALLINT。作为一个可扩展标准,MySQL也支持整数类型 TINYINT,MEDIUMINT和 BIGINT。下表显示了每种整数类型所需的存储空间和范围。 表11.1 MySQL支持的整数类型的必需存储和范围 类型…

Vue [Day7]

文章目录 自定义创建项目ESlint 代码规范vuex 概述创建仓库向仓库提供数据使用仓库中的数据通过store直接访问通过辅助函数 mapState(简化)mutations传参语法(同步实时输入,实时更新辅助函数 mapMutationsaction (异步辅助函数map…

Android应用开发(35)SufaceView基本用法

Android应用开发学习笔记——目录索引 参考Android官网:https://developer.android.com/reference/android/view/SurfaceView 一、SurfaceView简介 SurfaceView派生自View,提供嵌入视图层次结构内部的专用绘图表面,SurfaceView可以在主线程之…

高斯模糊与图像处理(Gaussian Blur)

高斯模糊在图像处理中的用途及其广泛,除了常规的模糊效果外,还可用于图像金字塔分解、反走样、高低频分解、噪声压制、发光效果等等等等。正因为高斯模糊太基础,应用太广泛,所以需要尽可能深入认识这个能力,避免在实际…