猿问

无法在 PythonAnywhere 上获取烧瓶 python API 的请求标头

我已经部署了一个基于烧瓶的 python 应用程序PythonAnywhere。它包含一个需要以下请求标头的 API:


app_name: <app-name>


app_key: <app-key>


下面是代码:


@app.route('/api/app/get_id', methods=['POST'])

def get_id():

    try:

        if 'app_name' and 'app_key' in request.headers:

            """

            SOME CODE

            """

        else:

            return jsonify({"status": "unauthorized", "error": "authentication parameters missing"}), 401

    except Exception as e:

        log.error("Exception occurred {}".format(e))

如您所见,它需要app_name和app_key. 如果在标头中未找到,则 API 仅返回错误。我从邮递员那里调用这个 API 并包含了app_name和app_key:

但它总是抛出error authentication parameters missing. 在我的本地测试中,它运行良好。我还尝试通过将日志记录如下进行调试:


@app.route('/api/app/get_id', methods=['POST'])

def get_id():

    try:

        log.error(request.headers)   # <-- logging

        if 'app_name' and 'app_key' in request.headers:

            """

            SOME CODE

            """

        else:

            return jsonify({"status": "unauthorized", "error": "authentication parameters missing"}), 401

    except Exception as e:

        log.error("Exception occurred {}".format(e))

但是日志文件app_name中app_key也不存在。看起来由于某种原因PythonAnywhere不接受这些请求标头。有谁知道问题是什么,我该如何解决。请帮忙。谢谢


喵喵时光机
浏览 130回答 1
1回答

jeck猫

'app_name' and 'app_key'在 Python 中计算为 True,因此您的 if 语句询问键 True 是否在标题中,并且可能不在。尝试使用if 'app_name' in request.headers and 'app_key' in request.headers'
随时随地看视频慕课网APP

相关分类

Python
我要回答