python - 从 Flutter App 接收 Python Cloud Function 中的变量
问题描述
我正在尝试通过 http 触发器将变量从我的颤振应用程序发送到谷歌云函数上的 python 脚本。
我可以成功触发函数,但我的函数没有接收到变量。
这是我的相关应用代码:
callCloudFunction() async {
final HttpsCallable callable = CloudFunctions.instance.getHttpsCallable(
functionName: 'testPath',
);
dynamic resp = await callable.call(<String, dynamic>{
'uid': uid,
}).catchError((onError) {
//Handle your error here if the function failed
});
}
这是我来自云函数的相关 python 代码:
def main(request):
name = 'empty'
request_args = request.args
request_json = request.get_json(silent=True)
if request_json and 'uid' in request_json:
name = request_json['uid']
elif request_args and 'uid' in request_args:
name = request_args['uid']
print(name)
没有问题触发该功能。它还有其他我没有在这里展示的功能,所以我可以确认触发器工作正常。它只是传递了那个不起作用的变量“uid”。
解决方案
您正在使用 Firebase SDK for Cloud Functions 调用可调用函数,但您的 python 函数只是一个常规 HTTP 函数。如果不实现SDK 用于与函数通信的协议,这将无法工作。仅在使用 Firebase CLI 部署时为 nodejs 提供对可调用对象的后端支持。
如果您只是从客户端发出普通的 HTTP 请求,而不是编写协议所需的所有代码,这可能会更容易。
推荐阅读
- ruby-on-rails - Rails 洗劫 sort_link 下拉菜单
- go - Go - “版本”包以及它是如何工作的?
- c# - IIS 中的 Microsoft.AspNetCore.Antiforgery.DefaultAntiforgery 错误
- android - 如何检测本机反应中启用了开发人员选项?
- java - 构建android设备反应本机的问题
- shader - 如果顶点着色器中的条件导致 Android 10 浏览器上的“没有缓冲区绑定到启用的属性”错误
- html - Internet Explorer 的 ng-autocomplete 问题
- python - 使用lambda(python)在s3中解析/编码csv中的字符串的问题
- tilde - “R”的“波浪号”模型公式应用于Matlab?
- java - 尝试在空对象引用上调用虚拟方法“java.util.Set android.bluetooth.BluetoothAdapter.getBondedDevices()”