【Rust】Web应用程序 - 二、Actix
在完成了上一章的rust安装后,这一章终于要跑一个网站服务器了,真是令人激动。
经过研究,这里主要是用到了一个叫 actix-web
的纸板箱(库),这个纸板箱拥有极强的并发能力,阿巴阿巴都是虚的,一般不都是为了性能才用Rust的嘛,当然也不排除是像我一样不喜欢用Java或解释型语言这类占用资源很多又啰嗦的语言
首先将纸板箱加入我们的工程,打开
./Cargo.toml
文件该文件是工程配置文件,里面可以设置工程的一些参数,同时依赖的库也是在这里面添加的。
在
[dependencies]
下面添加actix-web = "3.3.2"
在
src/main.rs
中使用以下示例代码1
2
3
4
5
6
7
8
9
10
11
12
13
14use actix_web::{get, web, App, HttpServer, Responder};
async fn index(web::Path((id, name)): web::Path<(u32, String)>) -> impl Responder {
format!("Hello {}! id:{}", name, id)
}
async fn main() -> std::io::Result<()> {
HttpServer::new(|| App::new().service(index))
.bind("127.0.0.1:8080")?
.run()
.await
}use
是类似其他语言的import
让当前源文件增加依赖库,使得当前源文件中能调用库函数#[]
是属性,可以参考:https://doc.rust-lang.org/reference/attributes.html ,调用起来还是很方便的async
表示异步函数fn
是一般语言的function
很简短,舒服web::Path((id, name)): web::Path<(u32, String)>
是函数的参数,中间的冒号指示这个参数的变量类型,小东西长得挺奇特的,有学过面向对象的语言多看看就理解了?
是将返回值std::io::Result
自动将异常抛给当前所在函数的返回值运行工程
1
cargo run
因为依赖比较多,编译可能会比较久
使用浏览器打开 http://localhost:8080/123/myName/index.html ,应该可以看到
Hello myName! id:123
【Rust】Web应用程序 - 二、Actix