返回
uni-app前端如何调用uniCloud后端接口(imgSecCheck踩坑)
前端
2023-09-25 18:06:17
uniCloud 简介
uniCloud 是由DCloud推出的一个云开发平台,它可以帮助开发者快速构建和部署云端应用。uniCloud 提供了丰富的云函数、云存储、云数据库等服务,开发者可以使用这些服务来构建各种各样的云端应用。
uniCloud 使用体验
小程序云开发还算挺火的,我也去尝试了一下,确实是非常省事,比如以前获取 openid,获取小程序码之类的接口都需要通过后端,用小程序云开发的话直接调用 API 就可以拿到了。这意味着咱前端也可以独立开发一个完整的小程序了,迈向全栈的一个近道~~
uniCloud 你可以理解为跟 uni-app 是一个厂商的,所以它们之间的适配性是非常好的,uni-app 中直接提供了一个 uniCloud
模块,可以让我们很方便地调用 uniCloud 的云函数。
使用场景
在项目中,我需要对用户上传的图片进行安全检查,以防止用户上传一些不合适的内容。
imgSecCheck 踩坑
uniCloud 提供了一个 imgSecCheck
云函数,可以对图片进行安全检查。在使用这个云函数时,我遇到了一个坑:
uniCloud.callFunction({
name: 'imgSecCheck',
data: {
file: 'cloud://xxx.jpg'
}
}).then(res => {
console.log(res)
})
调用这个云函数时,我传入了一个图片的路径,但返回结果却是一个错误:
{
"code": 1011,
"message": "The parameter 'img_url' in path must be String."
}
这个错误提示很明显,告诉我传入的参数 img_url
必须是一个字符串。但问题是,我明明传入的是一个字符串啊!
后来经过一番排查,我发现问题出在 file
参数上。file
参数并不是一个字符串,而是一个对象。这个对象包含了图片的路径、名称、大小等信息。
为了解决这个问题,我将 file
参数改成了一个字符串,如下所示:
uniCloud.callFunction({
name: 'imgSecCheck',
data: {
img_url: 'cloud://xxx.jpg'
}
}).then(res => {
console.log(res)
})
这样,问题就解决了。
总结
在使用 uniCloud 时,需要注意以下几点:
file
参数必须是一个字符串,而不是一个对象。img_url
参数必须是一个字符串,而不是一个对象。uniCloud.callFunction
方法的第二个参数data
必须是一个对象。
希望这篇博客能帮助到你!