Gin的请求与响应
请求
Gin的请求对象被封装在gin.Context这个结构体指针中
fmt.Println(c.Request.Method) // 请求方式
fmt.Println(c.Request.Header)   // 请求头
fmt.Println(c.Request.RemoteAddr) // 客户端地址和端口
fmt.Println(c.Request.Host) // 服务端地址和端口
fmt.Println(c.Request.Cookies()) // cookie
fmt.Println(c.Request.UserAgent()) // 客户端类型
fmt.Println(c.FullPath())       // 请求路径,不带?后的数据
fmt.Println(c.Request.Body) // 请求体,body体
body,_ := ioutil.ReadAll(c.Request.Body)
fmt.Println("---body--"+string(body))
响应
返回字符串c.String
	r.GET("/test", func(c *gin.Context) {
		c.String(200,"成功")
	})
返回json格式
r.GET("/json", func(c *gin.Context) {
		// 1 方式一,直接返回map格式
		var m = map[string]interface{}{
			"name": "lqz",
			"age":  19,
		}
		c.JSON(200, m)
		// 2 方式二,借助gin.H, gin.H 是 map[string]interface{}的缩写
		c.JSON(200, gin.H{"name": "lqz", "age": 19})
		// 3 方式三:直接返回结构体,注意大写,导出字段
		c.JSON(200, struct {
			Name string `json:"user"`
			Age  int
		}{"lqz", 19})
	})
返回json数组
package main
import (
	"github.com/gin-gonic/gin"
)
func main() {
	router := gin.Default()
	router.GET("/json", func(c *gin.Context) {
		type Person struct {
			Name string `json:"name"`
			Age  int    `json:"age"`
		}
		var personList = []Person{{"lqz", 19}, {"彭于晏", 22}, {"林俊杰", 39}}
		c.IndentedJSON(200, personList)
	})
	router.Run(":8000")
}
返回xml格式
func main() {
	r := gin.Default()
	r.GET("/xml", func(c *gin.Context) {
		// 1 方式一:使用gin.H
		c.XML(200,gin.H{"name":"lqz","age":19})
		// 2 方式二:使用结构体
		type Person struct {
			Name string `xml:"user"`
			Age int
		}
		var lqz Person=Person{"lqz",19}
		c.XML(200,lqz)
	})
	r.Run(":8000")
}
返回YAML格式
router.GET("/yaml", func(c *gin.Context) {
		c.YAML(200, gin.H{"name": "lqz", "age": 19})
	})
重定向
package main
import (
   "net/http"
   "github.com/gin-gonic/gin"
)
func main() {
   r := gin.Default()
   r.GET("/index", func(c *gin.Context) {
      c.Redirect(http.StatusMovedPermanently, "http://www.liuqingzheng.top")
   })
   r.Run()
}
重定向使用 jsoniter编译
jsoniter:https://github.com/json-iterator/go
  Gin 使用 encoding/json 作为默认的 json 包,但是你可以在编译中使用标签将其修改为 jsoniter。
go build -tags=jsoniter .
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号