21|Web开发(上):如何使用Axum框架进行Web后端开发?
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了如何使用Axum框架进行Web后端开发,以及Rust在Web开发中的适用性。文章首先讨论了Rust在Web后端开发中的优势,包括高性能、稳定可靠、适合重构等特点。接着介绍了Rust Web后端开发生态的繁荣局面,以及Axum框架的特性和优势。Axum框架基于Tokio技术栈,具有模块化、无需使用宏、简单可预测的错误处理模型等特点。此外,文章还介绍了Tower中间层服务和Tower-http库,以及Axum框架中的Router和Handler的使用方法。最后,文章通过示例演示了如何使用Axum框架进行Web后端开发,包括创建Hello World应用和实现静态文件服务。通过本文,读者可以了解到Rust在Web后端开发中的优势,以及Axum框架的特性和使用方法。Axum框架的简洁易读的代码示例展示了Rust强类型的优势,以及其在保证Web后端服务正确性和可靠性方面的优势。文章还提出了思考题,鼓励读者深入思考Request/Response模型以及Axum框架与其他gRPC框架的区别。整体而言,本文为读者提供了全面了解Rust在Web开发中的优势以及Axum框架的特性和使用方法的机会。
《Rust 语言从入门到实战》,新⼈⾸单¥59
全部留言(13)
- 最新
- 精选
- 小虎子🐯置顶版本已经更新到 0.7 啦
作者回复: 对的,今天已经更新啦
2023-12-11归属地:北京2 - 鸠摩智windows powershell中的启动命令:$env:RUST_LOG="debug" ; cargo run 。不设置级别的话,默认看不到debug级别的日志
作者回复: 好的,感谢补充win下的信息。
2023-12-11归属地:江苏2 - tan时区设置 ● cargo add time --features macros ● cargo add tracing-subscriber --features time ```rust use time::macros::{format_description, offset}; use tracing_subscriber::fmt::time::OffsetTime; let time_fmt = format_description!("[year]-[month]-[day]T[hour]:[minute]:[second].[subsecond digits:3]"); let timer = OffsetTime::new(offset!(+8), time_fmt); // init tracing_subscriber::fmt().with_max_level(Level::TRACE).with_timer(timer).init(); // use tracing::info!("listening on {}", listener.local_addr().unwrap()); ```
作者回复: 👍
2024-01-11归属地:重庆1 - 一只第一个例子 hello-world 需要使用链接中的依赖版本才能运行,应该是库的接口发生变更了。 或者使用 官方最新例子 ```rust use axum::{response::Html, routing::get, Router}; #[tokio::main] async fn main() { // build our application with a route let app = Router::new().route("/", get(handler)); // run it let listener = tokio::net::TcpListener::bind("127.0.0.1:3000") .await .unwrap(); println!("listening on {}", listener.local_addr().unwrap()); axum::serve(listener, app).await.unwrap(); } async fn handler() -> Html<&'static str> { Html("<h1>Hello, World!</h1>") } ```
作者回复: 抱歉,文章是基于0.6的版本,这个月出的0.7有一些break change。今天已经更新了。
2023-12-11归属地:上海1 - buoge日志部分配合这个看会更佳 使用 tracing 记录日志:https://course.rs/logs/tracing.html
作者回复: 很棒!
2023-12-20归属地:北京 - Geek_e72251tracing输出的日志时区不对,怎么设置时区啊?
作者回复: 这里:https://users.rust-lang.org/t/tracing-print-in-different-timezone/83994/4 https://rustcc.cn/article?id=66e2a76e-8c65-42f7-a773-66dff1a2a21e
2023-12-16归属地:广东2 - Carlsama内容已经调整到0.7了吗?看了评论有点不敢跟着抄写代码,等都更完再一块看
编辑回复: 是的,更新到0.7啦,可以等今晚的(下)出来一起看
2023-12-12归属地:广东 - My dream怎么用这个框架实现读取、导出xls或者pdf文件啊?
作者回复: xlsx和pdf的生成原理就是 数据+ driver。crates.io 上你可以搜索这两个关键字,找下载量最大的用。你先拿到数据,然后按对应格式在axum handler里面调用驱动处理就行啦
2023-12-12归属地:四川 - 雍和老师,文中说的evn_logger是不是笔误了呢?实际是env_logger?
作者回复: 好的,谢谢,马上处理。另外,我们正在升级到0.7来讲解。2,3天搞定。
2023-12-11归属地:广东 - -咋没有用最新版的0.7版本啊?
作者回复: 今天紧急更新了。
2023-12-11归属地:陕西2