Приложение (Application)¶
Основной класс, связывающий воедино весь функционал фрэймворка.
from hius import Hius
Особенности¶
- Класс не унаследован от Starlette, но заимствует некоторые механизмы, например инициализацию middleware.
- Является dict-like объектом, поэтому в нем можно хранить какие-то переменные либо другие объекты.
- Механизмы (on_startup, on_shutdown, on_lifespan), способны работать со множеством объектов. Кроме того, они передают в callable-объект само приложение, что позволяет например создать подключение к БД и установить его в приложение при старте и корректно закрыть подключение при завершении работы. Порядок вызова объектов совпадает с порядком их добавления.
- В классе реализованы как обычные методы, так и декораторы для написания сервиса в стиле Flask или FastAPI.
Описание¶
class Hius(debug=False,
routes=None,
exception_handlers=None,
on_startup=None,
on_shutdown=None,
on_lifespan=None)
Параметры¶
- debug (bool) - флаг debug-режима. При значении
True
, трэйсбэк будет форматироваться и отображаться в браузере. - routes (Sequence[BaseRoute]) - список роутов, которые будут обрабатывать входящие запросы.
- exception_handlers (Dict[Union[int, Type[Exception]], Callable]) - словарь, где ключ это статус-код либо тип исключения, а значение, (sync/async) callable-объект, который должен обработать это исключение. Обработчик исключения должен иметь следующую форму
handler(request, exc) -> response
. - on_startup (Sequence[Callable]) - список (sync/async) объектов, которые будут вызваны при старте приложения. Должны принимать на вход один параметр, этим параметром им передаётся само приложение.
- on_shutdown (Sequence[Callable]) - список (sync/async) объектов, которые будут вызваны при завершении работы приложения. Должны принимать на вход один параметр, этим параметром им передаётся само приложение.
- on_lifespan (Sequence[Callable]) - список (sync/async) генераторов. Должны содержать 2 "блока" кода и принимать на вход один параметр, этим параметром им передаётся само приложение. Первый блок кода выполняется при запуске приложения, второй при завершении работы.
Методы¶
Добавление обработчика исключения.
add_exception_handler(exc, handler)
- exc (Union[int, Type[Exception]) - статус-код или тип исключения, которое следует обработать.
- handler (Callable) - обработчик исключения.
Добавление middleware.
add_middleware(mw_cls, **mw_options)
- mw_cls (ASGIApp) - middleware-класс.
- mw_options (Dict[str, Any]) - словарь параметров для middleware.
Добавление списка HTTP роутов.
add_routes(routes)
- routes (Sequence[BaseRoute]) - список роутов.
Добавление HTTP роута.
add_route(path, endpoint, methods=None, name=None)
- path (str) - путь.
- endpoint (Callable) - обработчик роута.
- methods (Sequence[str]) - список методов, которые будут обрабатыватся на этом роуте.
- name (str) - имя роута.
Добавление Websocket роута.
add_websocket(path, endpoint, name=None)
- path (str) - путь.
- endpoint (Callable) - обработчик роута.
- name (str) - имя роута.
Монтирование суб-приложения.
mount(path, app, name=None)
- path (str) - путь.
- endpoint (ASGIApp) - инстанс суб-приложения.
- name (str) - имя cуб-приложения.
Получение роута внутри приложения.
url_path_for(name, **path_params)
- name (str) - имя роута.
- path_params (Dict[str, str]) - параметры для подстановки в путь.
Декораторы¶
Добавление обработчика исключения.
exception_handler(exc)
Тоже что и добавление используя метод, кроме передачи параметра handler, им является декорируемая функция.
Добавление HTTP/Websocket роута.
route(path, methods=None, name=None)
websocket(path, name=None)
Тоже что и добавление используя метод, кроме передачи параметра endpoint, им является декорируемая функция.
Добавление функций, вызываемых при запуске/завершении приложения.
on_startup()
on_shutdown()
on_lifespan()
Декорируемый объект должен принимать один параметр, которым является само приложение.