Маршруты Python Flask Blueprint всегда печатают содержимое запроса и ответа.Python

Программы на Python
Anonymous
Маршруты Python Flask Blueprint всегда печатают содержимое запроса и ответа.

Сообщение Anonymous »

В моем приложении Python Flask я использую маршрут Blueprint для обслуживания и обработки запросов API.
app/init.py

Код: Выделить всё

from api.foo import foo_route
from api.bar import bar_route
def create_app(config):
app = Flask(__name__)
app.register_blueprint(foo_route)
app.register_blueprint(bar_route)
...
return app
api/foo.py

Код: Выделить всё

from flask import Blueprint, request, jsonify
foo_route = Blueprint("foo", __name__)

@foo_route.route("/path/to/foo/API", methods=["POST"])
def handle_foo_api(request):
result = {"foo1": "foo1", "foo2": "foo2"}
return jsonify(result), 200

@foo_route.route("/path/to/foo/API/2", methods=["POST"])
def handle_foo_api_2(request):
result = {"foo3": "foo3", "foo4": "foo4"}
return jsonify(result), 200
api/bar.py

Код: Выделить всё

from flask import Blueprint, request, jsonify
bar_route = Blueprint("bar", __name__)

@bar_route.route("/path/to/bar/API", methods=["POST"])
def handle_bar_api(request):
result = {"bar1": "bar1", "bar2": "bar2"}
return jsonify(result), 200

@bar_route.route("/path/to/bar/API/2", methods=["POST"])
def handle_bar_api_2(request):
result = {"bar3": "bar3", "bar4": "bar4"}
return jsonify(result), 200
Как я могу распечатать все заголовки/тело запроса API и заголовки/тело ответа?
Я могу распечатать его внутри каждой функции. Например, чтобы напечатать заголовок запроса для функции handle_foo_api:

Код: Выделить всё

@foo_route.route("/path/to/foo/API", methods=["POST"])
def handle_foo_api(request):
logger.info(f"handle_foo_api request headers: {request.headers}")
logger.info(f"handle_foo_api request data: {request.json}")
result = jsonify({"foo1": "foo1", "foo2": "foo2"})
logger.info(f"handle_foo_api response headers: {resp.headers}")
logger.info(f"handle_foo_api response data: {resp.get_json()}")
return result, 200
Но хотелось бы сделать это раз и навсегда, а не в каждой функции. Как мне это сделать?

Подробнее здесь: https://stackoverflow.com/questions/784 ... se-content

Вернуться в «Python»