json - 在 Python Flask 应用程序中使用外部 API 时如何解决无返回错误?
问题描述
在我的 Flask 应用程序(Python 版本为 3.6)中,我需要向heroku
Web 服务器发出请求以获取一些 json 格式的响应。让我们看看当服务器收到这样的请求时要调用的函数:
@app.route("/get/camera/<id>")
def get_camera_by_id(id):
from models import Camera
try:
camera=Camera.query.filter_by(id=id).first()
return jsonify(camera.serialize())
except Exception as e:
return(str(e))
它返回 json 数据,好吧。然后我的应用程序发送此请求以提取相机对象信息:
@app.route('/get/url')
def pull_url():
cam = request.args.get('https://some-app.herokuapp.com/get/camera/2')
return str(cam)
上面的函数属于公共api,这里不考虑权限问题。请注意,我确实简化了最后一个函数,尽管它可能足以解决这种情况。当我的应用程序从服务器获取None
对象而不是 json 响应时,我遇到的问题就会出现。heroku
当然,在浏览器搜索掩码中使用相同的 url 看起来很完美——我可以看到那里显示了一个漂亮的 json 内容。我刚开始用 Flask(Python 也是)做网络应用程序,所以似乎缺乏理解为什么这一切都会出错。当然,任何线索将不胜感激。
解决方案
这可以这样做:
from flask import requests,json
现在使用请求从以下位置获取响应URL
:
cam_response = requests.get('your url here......')
对于 JSON 到 python 对象,您可以这样做:
cam_data = json.loads(cam_response)
推荐阅读
- javascript - Javascript使用选择元素创建输入字段
- vba - 从 MS Word 文档中读取单选按钮值时,为什么会出现“运行时错误 '91':对象变量或未设置块变量”?
- python - 解析很长的文本
- javascript - 如何获得每个数组的最大数量?
- swift - navigationController!.pushViewController 给出致命错误:在展开可选值时意外发现 nil:
- javascript - 从对象中提取某些属性
- laravel - 将 json 字符串转换为 Laravel 查询生成器的最佳方法?
- apache-spark - Spark SQL 连接多表设计
- amazon-web-services - 如何在 S3 中保存模型并在 Sagemaker 中保存检查点
- python - IndexError:numpy ndarray中的布尔索引与索引数组不匹配