golang如何获得当前请求的url?
net/http
包你可以使用 net/http
包来获取当前请求的 URL。具体的方案如下所示:
package main import ( "fmt" "net/http" ) func handler(w http.ResponseWriter, r *http.Request) { // 获取当前请求的 URL url := r.URL fmt.Println("URL:", url) // 获取 URL 的路径部分 path := r.URL.Path fmt.Println("Path:", path) // 获取 URL 的查询参数部分 query := r.URL.RawQuery fmt.Println("Query:", query) } func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) }
在上面的示例代码中,我们定义了一个 handler
函数来处理请求。在该函数内部,我们使用 r.URL
来获取当前请求的 URL。可以通过 r.URL.Path
获取 URL 的路径部分,而 r.URL.RawQuery
可以获取 URL 的查询参数部分。
可以使用 Gin 的上下文对象 gin.Context
来获取当前请求的 URL。下面是一个使用 Gin 获取当前请求 URL 的示例:
package main import ( "fmt" "github.com/gin-gonic/gin" ) func main() { r := gin.Default() r.GET("/", func(c *gin.Context) { // 获取当前请求的 URL url := c.Request.URL fmt.Println("URL:", url) // 获取 URL 的路径部分 path := c.Request.URL.Path fmt.Println("Path:", path) // 获取 URL 的查询参数部分 query := c.Request.URL.RawQuery fmt.Println("Query:", query) c.JSON(200, gin.H{ "message": "Hello, World!", }) }) r.Run(":8080") }
在上面的示例中,我们使用 gin.Default()
创建了一个 Gin 引擎实例,并定义了一个 GET 路由处理函数。在处理函数中,我们通过 c.Request.URL
来获取当前请求的 URL,并使用 c.Request.URL.Path
和 c.Request.URL.RawQuery
分别获取 URL 的路径部分和查询参数部分。