uni-app中dcloud云对象URL化后,event获取不到传递的值,求大佬解答
uni-app中dcloud云对象URL化后,event获取不到传递的值,求大佬解答
用下面那种形式
我尝试过这个,一样也是空
回复 1***@qq.com: 我刚试了下都是可以的,,post请求,第一种方式,url后+?title=todo-title&content=todo-content 第二种方式,我上面发的那种,在_before: function() { // 通用预处理器 const httpInfo = this.getHttpInfo() console.log(‘33333333333’, httpInfo); }, 都可以拿到
回复 套马杆的套子: 谢谢大佬解答,添加 通用预处理器的方式发送post请求确实可以,我忽略预处理器了,发生get请求的话,queryStringParameters还是空,需要在预处理添加什么内容才可以显示出来呢,谢谢回复
回复 1***@qq.com: 解决了,还是apipost使用的问题,遵循官方文档即可
回复 1***@qq.com: 谢谢大佬解答
你看下,云对象我这么用的,
请求url是https://*****/web/test?title=todo-title&content=todo-content的,
module.exports = {
_before: function() { // 通用预处理器
const httpInfo = this.getHttpInfo()
console.log(‘33333333333’, httpInfo);
},
test(param1) {
console.log('111111111111', param1);
return param1
}
}
test里的1111111会打印{
“title”: “todo-title”,
“content”: “todo-content”
},
如果是放到body json里,参数是{
“param1”:“2222”
}
打印就是
33333333333 {
path: ‘/test’,
httpMethod: ‘POST’,
headers: {
accept: ‘/’,
‘accept-encoding’: ‘gzip, deflate’,
‘cache-control’: ‘no-cache’,
‘content-length’: ‘19’,
‘content-type’: ‘application/json’,
‘postman-token’: ‘cdd1243c-9c81-467b-92c0-5c9b44cdde7a’,
service: ‘web-fun’,
‘sofa-rpcid’: ‘0a4b07e317362984980435906233’,
‘sofa-traceid’: ‘0a4b07e317362984980435906233’,
sofa_head_method_name: ‘/web/test’,
‘user-agent’: ‘PostmanRuntime/7.4.0’,
‘x-djy-uuid’: ‘f0e914a7-c83c-4495-be07-52589ad30d7d’,
‘x-faas-context-bindconfigs’: ‘{“NEED_AUTH”:“false”,“NEED_SIGN”:“false”}’,
‘x-faas-context-binddomain’: ‘env-00jxhoob9v1j.dev-hz.cloudbasefunction.cn’,
‘x-faas-context-bindpath’: ‘/web’,
‘x-faas-runtime-call-context’: ‘{“appId”:“2021004147642798”,“traceId”:“0a4b07e317362984980435906233”,“rpcId”:“0.1.2”,“requestId”:“891b471c-1cba-48e8-88f6-b655b3debbba”,“eventType”:“http”}’,
‘x-faas-source-type’: ‘httpDefault’,
‘x-forwarded-for’: ‘124.237.76.85’,
‘x-forwarded-proto’: ‘https’,
‘x-real-ip’: ‘124.237.76.85’,
‘x-stream-request-id’: ‘e1c327a0-e04a-491f-a18e-b4a7626d2169’,
‘x5-uuid’: ‘f0e914a7-c83c-4495-be07-52589ad30d7d’
},
queryStringParameters: { title: ‘todo-title’, content: ‘todo-content’ },
body: ‘{“param1”:“2222”}’,
isBase64Encoded: false
}
const params = this.getParams()也可以
回复 套马杆的套子: 我测试的阿里云和支付宝云2个云空间,阿里云空间正常return返回数据,但是支付宝云只有云函数运行日志里面是有内容的,但是return不出来,event无法引用内容,你用的是阿里的云空间吗
回复 1***@qq.com: 我用的是支付宝云
官方示例:
使用GET请求https://${云对象Url化域名}/${触发路径}/${云对象方法名}?a=1&b=2,云对象接收到的event为
{
path: ‘/${云对象方法名}’,
httpMethod: ‘GET’,
headers: {HTTP请求头},
queryStringParameters: {a: “1”, b: “2”},
isBase64Encoded: false
}
云函数日志:
2025-01-08 10:32:57.092 [adminAnnouncement][USER][INFO][0a4b07bb17363035770824041221] execute: d688a8f6-76a2-4103-9929-273cbe3fcabe,{
path: ‘/addAnnouncement’,
httpMethod: ‘GET’,
headers: {
accept: ‘/’,
‘accept-encoding’: ‘gzip, deflate, br’,
‘cache-control’: ‘no-cache’,
‘content-length’: ‘454’,
‘content-type’: ‘multipart/form-data; boundary=--------------------------964494404528125580825484’,
service: ‘adminAnnouncement’,
‘sofa-rpcid’: ‘0a4b07bb17363035770824041221’,
‘sofa-traceid’: ‘0a4b07bb17363035770824041221’,
sofa_head_method_name: ‘/announcement/addAnnouncement’,
‘user-agent’: ‘PostmanRuntime-ApipostRuntime/1.1.0’,
‘x-djy-uuid’: ‘6a81c371-1b09-4b27-8251-c5af3d20f368’,
‘x-faas-context-bindconfigs’: ‘{“NEED_AUTH”:“false”,“NEED_SIGN”:“false”}’,
‘x-faas-context-binddomain’: ‘env-00jxhew1a2ph.dev-hz.cloudbasefunction.cn’,
‘x-faas-context-bindpath’: ‘/announcement’,
‘x-faas-runtime-call-context’: ‘{“appId”:“2021004182661748”,“traceId”:“0a4b07bb17363035770824041221”,“rpcId”:“0.1.2”,“requestId”:“233e72b4-fb9d-48db-848b-98b9e286d803”,“eventType”:“http”}’,
‘x-faas-source-type’: ‘httpDefault’,
‘x-forwarded-for’: ‘39.154.168.205’,
‘x-forwarded-proto’: ‘https’,
‘x-real-ip’: ‘39.154.168.200’,
‘x-stream-request-id’: ‘ec1cf0cb-85a9-4fa5-a950-ebf55dabe1cf’,
‘x5-uuid’: ‘6a81c371-1b09-4b27-8251-c5af3d20f368’
},
queryStringParameters: {},
body: ‘’,
isBase64Encoded: ‘’
}
apipost:发送body下form-data数据,但是云函数内还是接收不到,使用url?字段可以接收,是我apipost使用的不对吗?(图片可以参考正文)
在uni-app中使用dcloud云对象进行URL化后,如果在事件处理中无法获取传递的值,这通常是由于数据传递或事件绑定方式不正确导致的。以下是一个简化的示例代码,展示如何在uni-app中正确传递和获取值。
1. 准备工作
确保你已经配置好dcloud云开发环境,并在云函数中设置了必要的逻辑。
2. 云函数示例(cloudfunctions/hello/index.js)
// 云函数入口文件
exports.main = async (event, context) => {
// 获取传递的参数
const { name } = event;
return {
success: true,
message: `Hello, ${name}!`,
};
};
3. 前端代码(uni-app 页面)
<template>
<view>
<button @click="callCloudFunction">Call Cloud Function</button>
<text>{{ result }}</text>
</view>
</template>
<script>
export default {
data() {
return {
result: ''
};
},
methods: {
async callCloudFunction() {
try {
const res = await uni.cloud.callFunction({
name: 'hello',
data: {
name: 'uni-app User'
}
});
this.result = res.result.message;
} catch (error) {
console.error('Cloud function call failed:', error);
}
}
}
};
</script>
<style scoped>
button {
margin: 20px;
}
text {
display: block;
margin-top: 20px;
}
</style>
4. 说明
- 云函数:在云函数中,我们通过
event
对象获取传递的参数name
,并返回一个包含问候语的对象。 - 前端代码:在uni-app页面中,我们定义一个按钮和一个文本显示区域。点击按钮时,调用
callCloudFunction
方法,该方法通过uni.cloud.callFunction
调用云函数,并传递参数{ name: 'uni-app User' }
。调用成功后,将返回的结果赋值给result
数据属性,以便在页面上显示。
5. 调试建议
- 确保云函数已经正确部署并可用。
- 检查前端代码中云函数名称和数据参数是否正确。
- 使用开发者工具的云函数调试功能,查看云函数的输入和输出,确保数据正确传递和处理。
通过上述代码和步骤,你应该能够在uni-app中正确调用dcloud云函数,并在事件处理中获取传递的值。如果问题依旧存在,请检查具体的错误信息和调用日志,以便进一步定位问题。