首页 > 解决方案 > 在 Python Flask 应用程序中使用外部 API 时如何解决无返回错误?

问题描述

在我的 Flask 应用程序(Python 版本为 3.6)中,我需要向herokuWeb 服务器发出请求以获取一些 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 也是)做网络应用程序,所以似乎缺乏理解为什么这一切都会出错。当然,任何线索将不胜感激。

标签: jsonpython-3.xapiflask

解决方案


这可以这样做:

from flask import requests,json

现在使用请求从以下位置获取响应URL

cam_response = requests.get('your url here......')

对于 JSON 到 python 对象,您可以这样做:

cam_data = json.loads(cam_response)

推荐阅读