gin方法

请求

c.Request.Method // 请求方式
c.Request.Header // 请求头
c.Request.RemoteAddr // 客户端地址和端口
c.Request.Host // 服务端地址和端口
c.Request.Cookies() // cookie
c.Request.UserAgent() // 客户端类型
c.FullPath()  // 请求路径,不带?后的数据
c.Request.Body // 请求体,body体
body,_ := ioutil.ReadAll(c.Request.Body)
log.Println("body content: ", string(body))

响应

// 一、返回JSON
c.String(200,"成功") // 返回字符串

// 二、 方式一,直接返回map格式
var m = map[string]interface{}{
		"name": "hcl",
		"age":  20,
	}
c.JSON(200, m)
// 方式二,借助gin.H, gin.H 是 map[string]interface{}的缩写
c.JSON(200, gin.H{"name": "hcl", "age": 20})
// 方式三:直接返回结构体,注意大写,导出字段
c.JSON(200, struct {
		Name string `json:"user"`
		Age  int
	}{"hcl", 20})

// 三、返回JSON数组
var lis = []Person{{"hcl", 20}, {"hcl2", 22}, {"hcl3", 20}}
c.IndentedJSON(200, lis)

// 四、返回xml格式
c.XML(200,gin.H{"name":"hcl","age":20})
// 使用结构体
type P struct {
	Name string `xml:"user"`
	Age int
}
var hcl P=P{"hcl",20}
c.XML(200,hcl)
// 五、返回yaml格式
c.YAML(200, gin.H{"name": "hcl", "age": 20})
// 六、重定向
c.Redirect(http.StatusMovedPermanently, "http://www.baidu.com")

Next和Abort

c.Next() // 用于中间件中,先执行Next上面内容,再执行控制器,最后执行Next下面内容
c.Abort() // 用于中间件中,Abort后面的内容会被终止执行

中间件和控制器之间传值

c.Set("name", "value") // 中间件中设置值
name, _ := c.Get("name") // 控制器中获取数据

数据绑定

type Login struct {
   // binding:"required"修饰的字段,若接收为空值,则报错,是必须字段
   User    string `form:"username" json:"user" uri:"user" xml:"user" binding:"required"`
   Pssword string `form:"password" json:"password" uri:"password" xml:"password" binding:"required"`
}
var login Login

// 将request的body中的数据自动按照json格式解析到结构体(只能解析json格式)
c.ShouldBindJSON(&login)
//Bind()默认绑定form格式根据请求头content-type自动推断,urlencoded,json,form-data格式都支持
c.Bind(&login)
// 绑定路径中的参数,r.GET("/:user/:password"
c.ShouldBindUri(&login)
// 获取路由中的参数 r.GET("/user/:id/:name"
id := c.Param("id")
name := c.Param("name")
params := c.Params
//获取客户端提交的参数get
name := c.Query("name")
age := c.Query("age")
name := c.DefaultQuery("name", "guest")
age := c.DefaultQuery("age", "0")
//获取客户端提交的参数post
c.Request.ParseForm() //处理前加上这一句方便解析
name := c.PostForm("name")
age := c.PostForm("age")

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值