#### `router.go`中,我使用auth作为路由群的用户验证如下
```
.....
apiv1 := r.Group("channel",middleware.Auth)
{
apiv1.POST("/AddChannel", v1.AddChannelR)
apiv1.POST("/EditChannel", v1.EditChannelR)
}
.....
```
#### 我的请求数据,请求头`application/json`
```
{
"channel_name":"test6",
"login_acct":"1222",
"login_pwd":"what",
"channel_rank":2,
"parent_code":"b2d6"
}
```
#### `auth.go` 我使用了`ShouldBind`绑定请求参数,此处成功获取到`r`的绑定后的结果
```
//收入请求
type AuthReq struct {
ChannelRank int `json:"channel_rank"`
ParentCode string `json:"parent_code"`
}
func Auth(c *gin.Context) {
var r AuthReq
c.ShouldBind(&r)
if r.ChannelRank == models.ONE_LEVEL {
c.Next()
}
.....
}
```
#### `channelInfo.go`中我再次使用`ShouldBind`绑定请求参数,此处的变量`acr`并没有获取到
```
type AddChannelReq struct {
ChannelName string `json:"channel_name"`
ChannelRank int `json:"channel_rank"`
ParentCode string `json:"parent_code"`
LoginAcct string `json:"login_acct"`
LoginPwd string `json:"login_pwd"`
}
func AddChannelS(c *gin.Context) (channelCode string, err error) {
var acr AddChannelReq
c.ShouldBind(&acr)
....
}
```
> `注意`列出的代码块都是通的 麻烦指定分析下
body, err := ioutil.ReadAll(c.Request.Body)
if err != nil {
glog.V(1).Infoln(err)
}
buff := bytes.NewBuffer(body)
c.Request.Body = ioutil.NopCloser(buff)
req := bytes.NewBuffer(body)
if err := json.NewDecoder(req).Decode(&form); err != nil {
glog.V(1).Infoln(err)
}
#4
更多评论