package main import ( "fmt" "github.com/gin-gonic/gin" "net/http" ) func main() { router := gin.Default() /* 在 Gin 框架中,可以通过 *gin.Context 对象获取前置路由信息和客户端的 IP 地址。 获取前置路由信息: 在 Gin 中,可以使用 *gin.Context 对象的 FullPath() 方法来获取完整的请求路径,包括前置路由信息。 例如,c.FullPath() 将返回 "/users/123",其中 "/users" 是前置路由。 */ // 前置路由为 "/users" router.GET("/users/:id", func(c *gin.Context) { // 获取完整的请求路径 fullPath := c.FullPath() c.JSON(http.StatusOK, gin.H{ "fullPath": fullPath, }) }) /* 2. 获取客户端的 IP 地址: 在 Gin 中,可以使用 *gin.Context 对象的 ClientIP() 方法获取客户端的 IP 地址。 例如,c.ClientIP() 将返回客户端请求的 IP 地址。 */ router.GET("/ip", func(c *gin.Context) { // 获取客户端的 IP 地址 ip := c.ClientIP() fmt.Println(ip) clientIp := c.GetHeader("Host") fmt.Println(clientIp) c.String(http.StatusOK, "Your IP is %s", clientIp) /*c.JSON(http.StatusOK, gin.H{ "ip": ip, })*/ /* 获取整个请求头 */ // 遍历并打印所有请求头 for key, values := range c.Request.Header { // 请求头的值是一个字符串切片 for _, value := range values { fmt.Printf("%s: %s\n", key, value) } } // 仅作为响应示例,实际情况可能需要不同的响应 c.String(200, "Headers printed in server logs.") }) router.Run(":8080") }