Как мне зарегистрировать тело запроса на сваггер / соединение? - PullRequest
0 голосов
/ 23 марта 2019

Я использую Connexion и Swagger для создания API в Python. Я хотел бы записать все входящие вызовы в файл, чтобы я мог видеть, что запрашивается. Мне удалось записать путь к полученным вызовам, но я не могу понять, как записать тело.

Вот где я настроил логирование:

if __name__ == '__main__':
    import logging
    logging.basicConfig(format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s',                            filename='golden_record.log',level=logging.DEBUG)

Когда я просматриваю журнал, я вижу путь, как показано ниже для вызова POST ...

2019-03-23 ​​12: 47: 16,182 - werkzeug - ИНФОРМАЦИЯ - 127.0.0.1 - - [23 марта / 2019 года 12:47:16] "POST / golden_record / account HTTP / 1.1" 400 -

но я не вижу текст звонка (то есть данные, которые я отправил). Есть ли способ автоматически записывать это при каждом входящем звонке? Это поможет отладить вызовы, которые не работают должным образом. Спасибо!

1 Ответ

0 голосов
/ 08 апреля 2019

Просто добавьте флягу перед требованием.Экземпляр Connexion сохраняет экземпляр Flask в качестве атрибута app, поэтому вы можете получить доступ с помощью app.app.

Добавьте код, и вы зарегистрируете тело:

@app.app.before_request def log_request_info(): print('Body: %s', request.get_data())

Измените метод print для вашего регистратора:

@app.app.before_request def log_request_info(): logger.info('Body: %s', request.get_data())

request импорт:

from flask import request

И app - это ваш экземпляр Connexion:

app = connexion.App(__name__, specification_dir="./swagger/")

Я создал Gist с кодом.https://gist.github.com/kevinmmartins/f832c21215bb51cea73b8fdd28f6d88d

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...