Rust:axum学习笔记(1) hello world
axum是Rust生态的web框架新秀,虽然项目成立不久,但github上的star数已超2.8k,其底层依赖的是高性能的Tokio,Tokio这货就不多说了,借用知乎《深入浅出Rust异步编程之Tokio》上的一张图:
Rust中的Tokio几乎是同类框架的性能天花板了,而axum在Tokio基础上构建,起点就站在巨人的肩膀上。
先来一个Hello World的入门示例:
[dependencies] axum="0.4.3" tokio = { version = "1.0", features = ["full"] }
添加上面的依赖项后,就可以编码了:
use axum::{ routing::get, Router, }; #[tokio::main] async fn main() { // build our application with a single route let app = Router::new().route("/", get(|| async { "Hello, World!" })); // run it with hyper on localhost:3000 axum::Server::bind(&"0.0.0.0:3000".parse().unwrap()) .serve(app.into_make_service()) .await .unwrap(); }
启动后,浏览器里跑一下:
再加几个路由:
use axum::{routing::get, Router}; #[tokio::main] async fn main() { // our router let app = Router::new() .route("/", get(root)) .route("/foo", get(get_foo).post(post_foo)) .route("/foo/bar", get(foo_bar)); // run it with hyper on localhost:3000 axum::Server::bind(&"0.0.0.0:3000".parse().unwrap()) .serve(app.into_make_service()) .await .unwrap(); } // which calls one of these handlers async fn root() -> String { String::from("hello axum") } async fn get_foo() -> String { String::from("get:foo") } async fn post_foo() -> String { String::from("post:foo") } async fn foo_bar() -> String { String::from("foo:bar") }
注意:/foo同时绑定了GET及POST方法的路由。可以测试一下:
参考链接:
https://docs.rs/axum/0.4.3/axum/index.html
https://zhuanlan.zhihu.com/p/107820568?from_voters_page=true
作者:菩提树下的杨过
出处:http://yjmyzz.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://yjmyzz.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。