garnetrouter
Содержание

Руководство

Установка

Для 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.