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提供试用版本给大家测试,欢迎大家下载!

  • 相关阅读:
    P3507 [POI2010]GRA-The Minima Game
    P2038 无线网络发射器选址
    2017.9.23清北第二场
    P3183 [HAOI2016]食物链
    2017.9.17校内noip模拟赛解题报告
    Day2代码
    P1328 生活大爆炸版石头剪刀布
    Fibinary Numbers
    Mac os 进行Android开发笔记(1)
    python中文注释及输出出错
  • 原文地址:https://www.cnblogs.com/easydss/p/13886243.html
Copyright © 2011-2022 走看看