это Uri из http, но и axum хорош:
- request.uri() содержит только path и query. Ни схемы, ни хоста с портом в нём нет - приседайте разработчики с заголовками сами, если хотите узнать полный URL запроса. Есть Issues, есть вопросы в Stackoferflow, есть странные заявления, что якобы всё должно быть, но в реальности пусто;
- у Uri нет банального метода join, что бы можно было на основе базового URL-а создавать новые - опять таки предлагается разработчикам изобретать велосипед.
- крейт uri уже deprecated - его автор предлагает использовать url.
В общем нет совсем базовой функциональности для веб-фреймворка - удобная работа с url-ами. А точно что axum популярный веб-фрейворк?
зачем тебе request.uri() ?
Я хочу в ответе выдавать абсолютный URL ресурсов, а не относительный. Для этого надо знать по какому URL пришёл клиент
Любопытно. Я просто актикс юзер, там это просто use actix_web::{web, App, Responder, HttpServer, HttpRequest}; async fn handler(req: HttpRequest) -> impl Responder { format!("Requested path: {:?}", req.connection_info()) } #[actix_web::main] async fn main() -> std::io::Result<()> { HttpServer::new(|| App::new() .default_service(web::to(handler)) ) .bind(("127.0.0.1", 8080))? .run() .await } Не думал что у аксума все так плохо
Решил поковырять salvo - там конечно тоже деприкейтнутый Uri, но хотя бы request.uri() содержит полный url, а не обрубок как в axum.
По моей информации два неироничных фреймворка под раст это аксум и актикс. Сальво/рокеты и прочие варпы - не оч.
Ну тогда следующий на очереди - actix. Я его уже как-то вертел немного. Может на нём и останавлюсь в конце концов.
Бери, он крутой. Аксум как будто немного несерьезно сделан, просто показать "смотрите как мы можем в нашем расте". Он оч тонкая обертка вокруг tokio + hyper
Даа, не нашёл в доке как реализовать "глобальный стейт" приложения. Например что бы в нём хранить конект к базе или настройки. В имеющихся примерах используют глобальные lazy переменные. Это такое себе. Иду к actix-у 😊
В axum есть такое
https://docs.rs/axum/latest/axum/#using-the-state-extractor
Да, там есть. Но приседания с url-ом мне не очень понравились
Да, меня это тоже удивило
Обсуждают сегодня