создание динамического обработчика в веб-приложении торнадо - PullRequest
1 голос
/ 03 мая 2019

Я ищу способ, с помощью которого я могу создавать обработчики на основе конфигурации. Конфигурация будет содержать глагол http, список авторизованных пользователей и логику для выполнения для данного обработчика и комбинации глаголов.

Здесь я хочу избежать каждого времени разработчиков при написании класса, производного от RequestHandler, и позволить им сосредоточиться на логике для извлечения данных. Поскольку остальная часть кода будет общей для аутентификации, при генерации ответа они могут просто указать, какой тип запроса они ожидают, например, GET или POST, и кто является авторизованными пользователями для отправки такого запроса.

Есть ли в Торнадо опция «из коробки» для достижения этой цели?

1 Ответ

0 голосов
/ 08 мая 2019

Это может быть достигнуто с помощью обработчика по умолчанию, который может обрабатывать любой запрос.Хотя это не создаст несколько обработчиков торнадо, а только 1, который будет работать на основе регулярных выражений для сбора запросов и действовать соответственно.Ниже приведен пример того, как я этого добился:

class DefaultHandler( tornado.web.RequestHandler ):
    def get( self ):
        path = self.request.path
        parameters = self.request.arguments
        #action to perform based on path and parameters

handlers = [ ( r'/.*', DefaultHandler), ]
app = tornado.web.Application( handlers )
...