1. Простая мидлевара, сигнатура обработчика должна быть такой:
async def some_handler(request: web.Request, data: Any) -> Any:
2. Мидлевара для произвольных аргументов у обработчиков, примеры объявлений обработчиков:
async def some_handler_1(data: dict) -> int: # ... return some_data async def some_handler_2(storage: StorageClass, data: List[int]) -> dict: # ... return some_data async def some_handler_3( data: Union[dict, List[str]], logger: LoggerClass, request: web.Request ) -> str: # ... return some_data
3. Мидлевара с оболочками для запросов и ответов, и валидацией данных (может наследоваться и от 1-й и от 2-й)
—
Ссылка:
https://github.com/EvgeniyBurdin/api_service/tree/main
—
Есть докер - можно быстро запустить и посмотреть в работе.