У меня есть следующие веб-приложение:Доступ объект ответа в bottlepy after_request крючок
import bottle
app = bottle.Bottle()
@app.route('/ping')
def ping():
print 'pong'
return 'pong'
@app.hook('after_request')
def after():
print 'foo'
print bottle.response.body
if __name__ == "__main__":
app.run(host='0.0.0.0', port='9999', server='cherrypy')
Есть ли способ получить доступ к телу ответа, прежде чем отправить ответ обратно?
Если я запустить приложение и я запрашиваю /ping
, я могу видеть в консоли, что ping()
и after()
функции выполняются в правильной последовательности
$ python bottle_after_request.py
Bottle v0.11.6 server starting up (using CherryPyServer())...
Listening on http://0.0.0.0:9999/
Hit Ctrl-C to quit.
pong
foo
но когда в after()
попытке получить доступ к response.body
, я ничего не имеют.
В Flask функции after_request, украшенные функцией, принимают входной объект ответа, поэтому его легко получить. Как я могу сделать то же самое в бутылке?
Есть ли что-то, что мне не хватает?
Плагины не вызываются для запросов, которые не соответствуют ни одному маршруту. Таким образом, это делает их непригодными для создания журнала доступа, например. –