Go - Gin - 路由 - 设置可选参数 - *

Gin框架中, 设置路径的可选访问参数

在一个路径的参数前加上*, 即可将该参数设置为可选参数, 如下:

package main

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

func main() {
	// 记住这里面的part 1 和 part 2 代表的部分
	r := gin.Default()
	// begin: part 1, 无可选参数
	r.GET("/:name", func(c *gin.Context) {
		name := c.Param("name")
		message := "Hello, " + name
		c.String(http.StatusOK, "%s", message)
	})
	// end: part 1
	// begin: part 2, 有可选参数
	// 设置role为可选参数
	r.GET("/:name/*role", func(c *gin.Context) {
		name := c.Param("name")
		role := c.Param("role")
		message := name + " is " + role
		c.String(http.StatusOK, "%s", message)
	})
	// end: part 2
	r.Run() // listen and serve on 0.0.0.0:8080
}

包含 part 1 和 part 2 两个部分的内容可以匹配到如下类型的 URL:

http://localhost:8080/my_name
http://localhost:8080/my_name/leaner

但是如果缺少part 1, 即如下的代码:

package main

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

func main() {
	// 记住这里面的part 1 和 part 2 代表的部分
	r := gin.Default()
	// begin: part 2, 有可选参数
	// 设置role为可选参数
	r.GET("/:name/*role", func(c *gin.Context) {
		name := c.Param("name")
		role := c.Param("role")
		message := name + " is " + role
		c.String(http.StatusOK, "%s", message)
	})
	// end: part 2
	r.Run() // listen and serve on 0.0.0.0:8080
}

只能匹配如下类型的 URL:

http:localhost:8080/my_name/leaner

如果试图通过http:localhost:8080/my_name去访问, 会直接报 404:
因为项目中缺少了匹配/:name的部分, 所以匹配失败

总结

要设置可选参数, 必须要将 part 1 带入, 否则可选参数将变为“必选参数”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值