Node.js用axios调用Agora云端录制API提示请求体校验失败如何解决
报错原因
Agora云端录制接口返回code:2代表请求体参数校验不通过,你的代码触发该错误的常见原因如下:
uid参数类型错误:接口要求该字段必须为字符串类型,若你传入的userId是数字类型会直接触发校验失败cname参数不符合规则:要求长度1~128位,仅支持数字、字母、下划线、中划线,存在中文、特殊符号或长度超限都会报错clientRequest为空不符合新版本接口要求:部分版本的云端录制接口不允许clientRequest完全为空,需要至少传入资源有效期字段- 参数名拼写错误:接口参数名大小写敏感,比如把
cname写成Cname、uid写成Uid都会校验失败
解决步骤
- 第一步:强制转换
uid为字符串类型,修改对应代码 - 第二步:补充
clientRequest必填的基础参数,添加资源有效期配置 - 第三步:校验
cname参数合规性,确认groupId长度在1-128位之间,无特殊字符 - 第四步:检查所有参数名的拼写,确保和示例完全一致,没有大小写错误
- 第五步:打印完整请求体日志确认参数,避免传入空值或不符合要求的字段
修改后的参考代码:
const Authorization = `Basic ${Buffer.from(`${config.CUSTOMERID}:${config.CUSTOMER_SECRET}`).toString("base64")}`; // 构造标准化请求体 const reqBody = { cname: groupId, // 强制转字符串避免类型错误 uid: String(userId), clientRequest: { // 单位为小时,指定录制资源的有效期,最大支持168(7天),填24即可满足常规场景 resourceExpiredHour: 24 } } // 打印请求体方便排查参数问题 console.log('提交的请求体:', JSON.stringify(reqBody)) const acquire = await axios.post( `https://api.agora.io/v1/apps/${config.agoraAppId}/cloud_recording/acquire`, reqBody, { headers: { Authorization } } );
内容的提问来源于stack exchange,提问作者MUHAMMAD SHAHID RAFI C P
相关产品推荐
相关产品推荐

