测试向PostgreSQL插入数据的GCP Cloud Function需传入何种JSON?
GCP Cloud Function插入PostgreSQL测试问题:调用时需传入的JSON内容说明
问题场景
我正在测试一个通过GCP Cloud Function向PostgreSQL插入数据的函数,但测试时系统提示需要传入JSON,不清楚具体该传什么内容。
当前函数代码
def hello_world(self): # 建立数据库连接 conn = psycopg2.connect( database='somedb', user='someuser', password='somepwd', host='XX.XXX.XXX.XXX', port='5432' ) # 创建游标对象 cursor = conn.cursor() # 待插入的数据列表 data = [('Babita', 'Bihar'), ('Anushka', 'Hyderabad'), ('Anamika', 'Banglore'), ('Sanaya', 'Pune'), ('Radha', 'Chandigarh')] # 插入数据到employee表 for d in data: cursor.execute("INSERT into employee(name, state) VALUES (%s, %s)", d) # print("数据已成功插入employee表...") # 提交数据库变更 conn.commit() # 关闭连接 conn.close()
截图说明
截图展示了GCP Cloud Function的测试界面,界面提示“需要提供JSON格式的请求体”,输入区域为空,等待用户输入对应内容。
解决方案
1. 快速测试:传入空JSON即可触发现有逻辑
当前函数里的插入数据是硬编码的,不需要用传入的JSON内容,但GCP的HTTP触发器默认要求请求体为JSON格式。你只需要在测试界面的请求体输入框里输入{}(空JSON对象),就能满足系统要求,触发函数执行硬编码的数据插入操作。
另外注意:你的函数定义用了self参数,这是类方法的写法,建议改成普通函数形式(去掉self,换成request参数,符合GCP Cloud Function的HTTP触发器规范),修改后的函数头:
def hello_world(request):
2. 动态插入:通过传入JSON传递数据
如果想让函数根据传入的JSON动态插入数据,可以修改函数逻辑,从请求中获取JSON数据:
def hello_world(request): # 获取请求中的JSON数据 request_json = request.get_json() # 校验数据是否存在 if not request_json or 'data' not in request_json: return '请求中缺少data字段', 400 # 建立数据库连接 conn = psycopg2.connect( database='somedb', user='someuser', password='somepwd', host='XX.XXX.XXX.XXX', port='5432' ) cursor = conn.cursor() # 使用传入的数据进行插入 data = request_json['data'] for d in data: cursor.execute("INSERT into employee(name, state) VALUES (%s, %s)", d) conn.commit() conn.close() return '数据插入成功', 200
此时测试时需要传入包含data字段的JSON,示例内容:
{ "data": [ ["Babita", "Bihar"], ["Anushka", "Hyderabad"] ] }
内容的提问来源于stack exchange,提问作者P Kernel
相关产品推荐
相关产品推荐

