在 Python Cloud Function 中使用错误处理程序返回 JSON

Mat*_*ara 5 python flask google-cloud-platform google-cloud-functions

我正在使用 Python 作为 HTTP 云函数,并希望将默认错误处理程序设置为返回 JSON 而不是 HTML。

from flask_expects_json import expects_json
import payment_orders_schema
from flask import jsonify, Flask

schema = payment_orders_schema.schema

app = Flask(__name__)


@app.errorhandler(400)
def bad_request(error):
    return jsonify({'error': error.description}), 400


@expects_json(schema)
def add_payment_order(request, methods=['POST']):

    request_json = request.get_json(silent=True)

    if request_json:
        return jsonify(request_json), 200

Run Code Online (Sandbox Code Playgroud)

首先,我不确定是否可以app在云函数中定义变量,其次,它@app.errorhandler不起作用,云函数返回 HTML。

有任何想法吗?

Dus*_*ram 0

首先,我不确定是否可以app在云函数中定义变量

你不能。尽管 Cloud Functions 使用 Flask 在底层处理请求,但它不支持app像您在这里所做的那样设置您自己的 Flask WSGI。

不过,您可以将其按原样部署到App Engine 标准 Python 3.7 运行时。您可能想考虑这样做。