Пропустить промежуточные программы aiohttp для указания маршрута c - PullRequest
0 голосов
/ 16 января 2020

У меня есть два маршрута:

app = web.Application(middlewares=[middleware1, middleware2])

app.add_routes([
    web.post('/route1', route1_handler),
    web.post('/route2', route2_handler)
])

Все запросы к «route1» должны проходить через промежуточные программы. Но все запросы к «route2» должны go напрямую поступать к обработчику.

Можно ли сделать исключение для указания c маршрута или обработчика?

Что-то более приятное, чем:

@web.middleware
async def middleware1(request, handler):
    if request.url.ensdwith('/route2'):
        return await handler(request)

Другой способ, который я нашел, - это сравнить обработчик.

@web.middleware
async def authorization_middleware(request, handler):
    if handler.__name__ == 'route2_handler':
        return await handler(request)

Но если у вас более одного промежуточного ПО, оно не будет работать, так как обработчик для первого промежуточного ПО будет вторым промежуточное ПО (цепочка с конца).

...