zoukankan      html  css  js  c++  java
  • RTMP推流协议互联网直播/点播云服务平台EasyDSS报Field validation for 'xxxx' failed on the 'required' tag错误解决方法

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

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

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

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

    // 获取子目录
    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"`
    }
    

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

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

  • 相关阅读:
    鬼斧神工---计算机的开机启动过程
    微服务之日志落盘设计
    微服务架构设计
    一条SQL语句执行得很慢的原因有哪些?
    996:只要能活着就好,不管活得多么糟糕
    事务隔离性与隔离级别
    数据库悲观锁与乐观锁
    解决百度网盘(百度云)分享链接不存在失效、分享的文件已经被取消的问题
    宁撞金钟一下,不打破鼓三千,IT人要有志气,要进就进大的好的公司
    1430:家庭作业
  • 原文地址:https://www.cnblogs.com/easydss/p/13886243.html
Copyright © 2011-2022 走看看