Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsSpHsPh 251 of 288 menu
◀ ▶

Кусок адреса в аргументе в Rust

Когда в шаблоне адреса стоит имя в фигурных скобках, библиотека вырезает соответствующий кусок пути и кладет его в аргумент обработчика. Так один шаблон обслуживает много конкретных адресов с разными идентификаторами.

Имя в скобках пишут без двоеточия, как в современной записи маршрута. Тип аргумента задают оберткой над строкой или числом, которую дает модуль извлечения.

Свяжем адрес с полем id и вернем его в ответе:

use axum::{Router, extract::Path, routing::get}; #[tokio::main] async fn main() { let app = Router::new().route("/user/{id}", get(user)); let listener = match tokio::net::TcpListener::bind("127.0.0.1:3000").await { Ok(l) => l, Err(e) => { eprintln!("{}", e); return; } }; match axum::serve(listener, app).await { Ok(()) => {} Err(e) => eprintln!("{}", e), } } async fn user(Path(id): Path<String>) -> String { format!("user {}", id) }

Запрос /user/7 дает текст user 7. Если сегмент не подходит под тип, ответ будет ошибкой клиента.

Несколько имен в одном шаблоне попадают в кортеж аргументов:

use axum::{Router, extract::Path, routing::get}; async fn pair(Path((left, right)): Path<(String, String)>) -> String { format!("{}:{}", left, right) } #[tokio::main] async fn main() { let app = Router::new().route("/pair/{left}/{right}", get(pair)); let listener = match tokio::net::TcpListener::bind("127.0.0.1:3000").await { Ok(l) => l, Err(e) => { eprintln!("{}", e); return; } }; match axum::serve(listener, app).await { Ok(()) => {} Err(e) => eprintln!("{}", e), } }

Дан путь:

/item/{code}

Верните текст item с подставленным значением code из адреса.

Дан путь:

/book/{title}/page/{num}

Скажите, сколько параметров получит функция и в каком порядке.

Дан путь:

/user/{id}

Замените тип идентификатора на целое число и опишите ответ для /user/x.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить