RTMP推流协议互联网直播/点播云服务平台EasyDSS报Field validation for ‘xxxx‘ failed on the ‘required‘ tag错误解决方法

这几天我们的研发人员在EasyDSS前端调用后端接口获取目录接口时,出现Error:Field validation for ‘OnlyNextLayer’ failed on the ‘required’ tag"错误。具体返回错误如下图所示:

90.png

返回数据类型为 400,代表请求错误。但是检验前端发送数据是完全正确的。以上窗口,运行几秒后,自动退出。

原因分析
查看后台,发现后台报错如下:

91.png

然后查看该接口对应的源代码,源代码如下。

// 获取子目录
type VodGetChildrenDir struct {
   // id
   ID string `form:"id" json:"id" binding:"required"`
   // 是否仅查询下一层数据
   OnlyNextLayer bool `form:"onlyNextLayer" json:"onlyNextLayer" binding:"required"`
}

在 onlyNextLayer 中添加了 binding:“required” 这个配置,代表该字段为必须传递的字段,如果未查找到该字段则报错。模拟前端请求,请求脚本如下:

### 获取目录的子目录信息
POST http://localhost:10080/v1/vodDir/getChildren
Accept: */*
Cache-Control: no-cache
Content-Type: application/json

{
  "id": "OjPM1U5MR",
  "onlyNextLayer": false
}

在请求参数中确实传递了 onlyNextLayer 参数,但是仍然会报以上错误。因此阅读官方文档代码,查看代码逻辑,在代码中定义的数据为,如果将前端的数据赋值给后台VodGetChildrenDir后,数据中的OnlyNextLayer如果仍然是原始字段,就认为该参数没有传递。
因此 binding:“required” 这个参数代表的真实意义为:必须存在这个字段,并且这个字段不能为初始值,如字符串不能为初始值“”,布尔类型的值不能为初始值false,数字类型的值不能为初始值0。

解决方案

根据代码逻辑分析,该 required 可以去除,不会影响数据出现问题。因此代码如下

// 获取子目录
type VodGetChildrenDir struct {
   // required 代表此字段不可以省略,并且不能为""、0、false等
   // id
   ID string `form:"id" json:"id" binding:"required"`
   // 是否仅查询下一层数据
   OnlyNextLayer bool `form:"onlyNextLayer" json:"onlyNextLayer"`
}

修改代码,重新启动,前端发送相同的数据,可获取到对应的数据。

92.png

EasyDSS支持Flash、HTML5播放,兼容Windows、Android、iOS、Mac等操作系统,转码、上传一体化设计,使音视频资源转码后可立即面向互联网进行发布。大家如果还想了解更多EasyDSS视频平台相关内容,欢迎联系我们咨询了解,EasyDSS提供试用版本给大家测试,欢迎大家下载!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值