garnetrouter
Маршрутизация и middleware без фреймворка.
garnetrouter сопоставляет HTTP-запросы с обработчиками на Rust. Поддерживаются параметры пути, подстановки, группы маршрутов и middleware, а поиск идёт по radix-дереву, поэтому остаётся быстрым при любом числе маршрутов.
cargo add garnetrouter
Пример
use garnetrouter::{Router, Error};
#[tokio::main]
async fn main() -> Result<(), Error> {
let router = Router::builder()
.redirect_trailing_slash(true)
.base_path("/")
.build()?;
router.get("/users/{id}").await?;
let items = router.routes().await?;
println!("{items:?}");
Ok(())
}
Возможности
- Стандартные типы. Обработчики — обычные функции, никакого своего контекста.
- Middleware. Оборачивайте обработчики логированием, авторизацией, таймаутами и чем угодно ещё.
- Поиск конфликтов. Неоднозначные маршруты обнаруживаются при запуске, а не во время запроса.
- Параметры пути. Захватывайте сегменты вроде
/users/{id}и читайте их в обработчике.
Документация
УстановкаТребования, установка и сборка из исходников.
РуководствоПервая программа и основные понятия.
ПримерыЗаконченные программы для типичных задач.
КонфигурацияВсе параметры, их типы и значения по умолчанию.
Справочник APIСигнатуры и поведение публичного API.
ТестированиеКак тестировать код, использующий библиотеку.
Вопросы и ответыКороткие ответы на частые вопросы.
РелизыИстория релизов.
Политика безопасностиПоддерживаемые версии и сообщения об уязвимостях.
ПоддержкаГде задать вопрос и как связаться с авторами.