Обработчики
Falcon поддерживает обработчики до и после. Вы устанавливаете обработчик, просто применив один из нижеприведённых декораторов, либо к отдельному обработчику, либо к целому ресурсу.
Например, рассмотрим этот обработчик, который валидирует POST-запрос для ресурса изображения:
def validate_image_type(req, resp, resource, params):
if req.content_type not in ALLOWED_IMAGE_TYPES:
msg = 'Image type not allowed. Must be PNG, JPEG, or GIF'
raise falcon.HTTPBadRequest('Bad request', msg)
Вы бы прикрепили этот обработчик к on_post обработчику следующим образом:
@falcon.before(validate_image_type)
def on_post(self, req, resp):
pass
Или, предположим, у вас есть обработчик, который вы хотели бы применить к всем обработчикам для данного ресурса. В этом случае вы просто добавите декоратор к классу ресурса:
@falcon.before(extract_project_id)
class Message(object):
def on_post(self, req, resp):
pass
def on_get(self, req, resp):
pass
Falcon компоненты промежуточного программного обеспечения также могут использоваться для вставки логики до и после запросов. Однако, в отличие от обработчиков, компоненты промежуточного программного обеспечения вызываются глобально для всех запросов.
-
falcon.before(action)[source] -
Декоратор для выполнения заданной функции действия до обработчика.
Параметры: action (callable) – Функция вида
func(req, resp, resource, params), гдеresource- ссылка на экземпляр класса ресурса, связанный с запросом, иparams- словарь имён полей шаблона URI, если таковые имеются, которые будут переданы обработчику ресурса в качестве аргументов kwargs.Примечание
Обработчики могут вводить дополнительные параметры по мере необходимости. Например:
def do_something(req, resp, resource, params): try: params['id'] = int(params['id']) except ValueError: raise falcon.HTTPBadRequest('Invalid ID', 'ID was not valid.') params['answer'] = 42
-
falcon.after(action)[source] -
Декоратор для выполнения заданной функции действия после обработчика.
Параметры: action (callable) – Функция вида func(req, resp, resource), гдеresource- ссылка на экземпляр класса ресурса, связанный с запросом
© 2012–2016 by Rackspace Hosting, Inc. and other contributors
Licensed under the Apache License, Version 2.0.
https://falcon.readthedocs.io/en/1.2.0/api/hooks.html