GCP Cloud Function调用时无法读取传入数据问题咨询
问题根因
你本地调用代码的请求格式不符合云函数的解析逻辑:
- 调用
requests.post()时使用data参数传递字典,requests会默认将内容序列化为application/x-www-form-urlencoded格式的表单数据,不会设置JSON请求头 - 云函数中仅实现了URL参数、JSON请求体两种场景的解析,无法识别表单格式的参数,因此进入默认分支返回
Hello World!
修复方案
方案1:修改本地调用代码(推荐)
将请求参数改为通过json参数传递,requests会自动设置正确的JSON请求头,适配现有云函数逻辑:
import requests url = "https://europe-west-2/testing_response" # url已脱敏,云函数名称为testing_response data = {"message":"foo"} # 替换data参数为json参数 response = requests.post(url, json=data) print(response.text)
方案2:修改云函数适配表单请求
如果业务需要保留表单格式传参,可以在云函数中新增表单数据的解析分支:
def hello_world(request): request_json = request.get_json() if request.args and 'message' in request.args: return request.args.get('message') elif request_json and 'message' in request_json: return request_json['message'] # 新增表单参数解析逻辑 elif request.form and 'message' in request.form: return request.form.get('message') else: return f'Hello World!'
验证
修改对应代码后重新运行本地调用,即可正常返回foo结果。
内容的提问来源于stack exchange,提问作者Joshua Douglas
相关产品推荐
相关产品推荐

