重定向分為外部重定向和內部重定向,也可以分為永久重定向和臨時重定向。
外部重定向
可以使用Redirect方法來實現,舉個例子,如果我們想永久重定向到外部的百度:
package main
import (
"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 main
import (
"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