Go Gin中如何实现高效的重定向和复杂路由配置?
摘要:重定向 路由重定向 package main import ( "github.comgin-gonicgin" "nethttp&quot
重定向
路由重定向
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
router := gin.Default()
router.GET("/redirect", func(c *gin.Context) {
c.Redirect(http.StatusMovedPermanently, "https://www.baidu.com")
})
router.Run(":8080")
}
HTTP 重定向
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
router := gin.Default()
router.GET("/redirect-router", func(c *gin.Context) {
c.Request.URL.Path = "/redirect"
// 路由重定向:手动处理上下文,触发路由处理
router.HandleContext(c)
})
router.GET("/redirect", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"message": "redirect success",
})
})
router.Run(":8080")
}
Gin 路由
普通路由
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
// 创建一个默认的路由引擎
r := gin.Default()
// 添加中间件(可选)
r.Use(gin.Logger())
r.Use(gin.Recovery())
// 定义一个 GET 请求的路由,路径为 "/ping"
r.GET("/ping", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"message": "pong",
})
})
// 定义一个带参数的路由
r.GET("/hello/:name", func(c *gin.Context) {
name := c.Param("name")
c.JSON(http.StatusOK, gin.H{
"message": "Hello " + name,
})
})
// 接受一切路由方式,包括 GET、POST、PUT、DELETE 等
r.Any("/test", func(c *gin.Context) {
name := c.Param("name")
c.JSON(http.StatusOK, gin.H{
"message": "Hello " + name,
})
})
//NoRoute 404 路由. 找不到路由的情况下, 会调用这个路由
r.NoRoute(func(c *gin.Context) {
c.JSON(http.StatusNotFound, gin.H{
"message": "404 Not Found",
})
})
// 启动 HTTP 服务器,默认监听在 0.0.0.0:8080
r.Run() // 等价于 r.Run(":8080")
}
路由组
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
//URL前缀的路由划分为一个路由组。
