重定向分为内部重定向和外部重定向,也能够分为永恒重定向和长期重定向。

内部重定向

能够应用Redirect办法来实现,举个例子,如果咱们想永恒重定向到内部的百度:

package mainimport (    "github.com/gin-gonic/gin"    "net/http")func main() {    r := gin.Default()    r.GET("/index", func(c *gin.Context) {        c.Redirect(http.StatusMovedPermanently, "https://www.baidu.com")    })    r.Run(":9090")}

运行后果就间接重定向到内部的百度了,咱们发现


外部重定向

举个例子,如果想要从/a外部跳到/b,能够这样写:

package mainimport (    "github.com/gin-gonic/gin"    "net/http")func main() {    r := gin.Default()    r.GET("/index", func(c *gin.Context) {        c.Redirect(http.StatusMovedPermanently, "https://www.baidu.com")    })    r.GET("/a", func(c *gin.Context) {        //跳转到/b对应的路由处理函数        c.Request.URL.Path = "/b"        r.HandleContext(c)    })    r.GET("/b", func(c *gin.Context) {        c.JSON(http.StatusOK, gin.H{            "message": "b",        })    })    r.Run(":9090")}

后果如下:


参考: bilibili