У меня есть два маршрута:
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)
Но если у вас более одного промежуточного ПО, оно не будет работать, так как обработчик для первого промежуточного ПО будет вторым промежуточное ПО (цепочка с конца).