Flask使用解析后的JSON调用第三方API报错如何解决?
问题原因及修复方案
1. 代码执行顺序问题
return语句是Python函数的终止标识,一旦运行到return行,函数会直接返回结果,后面的所有代码都不会被执行。这就是你把buy(data)放在return之后没有任何反应的原因。
2. 类型不匹配报错问题
你获取到的data是列表类型,而你写的buy函数中使用了只有字典才有的keys()方法,列表不存在该方法,因此触发AttributeError: 'list' object has no attribute 'keys'报错。除此之外你的buy函数还存在两个语法/逻辑问题:
- 未定义
product变量就直接传入api.submit_order调用 api.submit_order调用后缺少右括号,print语句缩进错误
修复后的代码
接口逻辑调整
@site.route('/data', methods=['POST']) def parse_request(): data = request.get_json() print(data) buy(data) # 调整到return语句之前执行 return jsonify(success=True)
buy函数适配调整
def buy(data): # 直接遍历列表中的每个商品字典 for item in data: product_id = item['id'] product = item['product'] quantity = item['quantity'] # 调用第三方API,注意如果接口要求数量为数字类型,可转成int(quantity) api.submit_order( product=product, quantity=quantity ) print(f"Submitted order for {quantity} piece(s) of {product}(s)") return
内容的提问来源于stack exchange,提问作者vauss
相关产品推荐
相关产品推荐

