Метод apply
Метод apply применяется к экземпляру плагина
и вызывается Bottle при регистрации маршрута.
Первым параметром передаётся функция-обработчик,
вторым - объект Route. Метод должен вернуть
новую функцию или декоратор, который будет
использован вместо исходного обработчика.
Синтаксис
plugin.apply(callback, route)
Пример
Давайте создадим простой плагин, который логирует вызовы обработчика:
from bottle import Bottle, Plugin
class LogPlugin(Plugin):
name = 'log'
api = 2
def apply(self, callback, route):
def wrapper(*args, **kwargs):
print('before call')
res = callback(*args, **kwargs)
print('after call')
return res
return wrapper
app = Bottle()
app.install(LogPlugin())
@app.route('/')
def index():
return 'hello'
Результат выполнения кода при запросе к адресу /:
"before call"
"after call"
Пример
Давайте создадим плагин, который добавляет заголовок к результату обработчика:
from bottle import Bottle, Plugin, response
class HeaderPlugin(Plugin):
name = 'header'
api = 2
def apply(self, callback, route):
def wrapper(*args, **kwargs):
response.set_header('X-Custom', 'abcde')
return callback(*args, **kwargs)
return wrapper
app = Bottle()
app.install(HeaderPlugin())
@app.route('/')
def index():
return 'hello'
Результат выполнения кода для заголовков ответа:
X-Custom: abcde