Руководство
Установка
Для garnetrouter нужен Rust 1.74+. Добавьте библиотеку в проект:
cargo add garnetrouter
Использование
Создайте Router один раз при запуске и используйте его во всём приложении.
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(())
}
Маршруты
Маршрут — это метод, шаблон и обработчик. Статические сегменты важнее параметров, а параметры важнее подстановок, независимо от порядка регистрации.
Регистрируйте маршруты при запуске. После старта сервера таблица маршрутов только читается.
Параметры
Используйте {id} для одного сегмента и {rest...} для остатка пути. Параметры всегда строки; преобразуйте и проверяйте их в обработчике.
Группы и middleware
У группы общий префикс и стек middleware. Middleware выполняются в порядке добавления, внешний — первым.
Держите middleware маленькими. Если нужен найденный маршрут, берите его из запроса, а не разбирайте путь заново.
Ошибки маршрутизации
Если ни один маршрут не подошёл, вызывается обработчик not found. Если путь совпал, а метод нет, роутер отвечает 405 с заголовком Allow.