Rust后端框架+docker的选择与技术调研
star数量趋势
2023 年可以关注的 Rust Web 框架(后端) - 知乎 (zhihu.com)
| 框架 |
适合规模 |
性能 |
代码写法 |
社区活跃 |
是否含前端模板 |
socket |
文档 |
| actix-web |
中到大型 |
非常出色 |
简洁 |
非常好 |
否 |
是 |
优秀 |
| axum |
中到大型 |
良好 |
现代化 |
较好 |
否 |
是 |
良好 |
| warp |
小到中型 |
非常出色 |
函数式 |
一般 |
否 |
是 |
不足 |
| rocket |
小到中型 |
良好 |
易用 |
一般 |
是 |
是 |
一般 |
最开始用的是warp,但发现这个代码的简洁程度好像没有其他的好。
接下来的首选肯定是actix-web。但一上来就给我整了个报错。
试了一下axum倒是没有那么不顺利。
https://crates.io/crates/axum
https://docs.rs/axum/latest/axum/
需要写再toml里的东西:
1 2 3 4 5 6
| serde_json = "1.0" serde = { version = "1.0", features = ["derive"] }
axum = "0.7.4" tokio = { version = "1", features = ["full"] }
|
axum在2024年3月14日已经0.7了,问chatGPT3.5他还会按照0.4的来回答你。这个axum在API方面的变动还是有的。
axum库的代码示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| use axum::{ response::Json, routing::{get, post}, Router, }; use serde::{Deserialize, Serialize}; use serde_json::{json, Value};
#[derive(Debug, Deserialize, Serialize)]
pub struct User { pub account: String, }
#[tokio::main] async fn main() { let app = Router::new() .route("/", get(root)) .route("/test", get(test)) .route("/p", post(post_foo)) .route("/foo/bar", get(foo_bar));
let listener = tokio::net::TcpListener::bind("0.0.0.0:9999").await.unwrap(); axum::serve(listener, app).await.unwrap(); }
async fn root() -> &'static str { "hello axum" }
async fn test() -> Json<Value> { Json(json!({ "output": "2/n", "time": 2})) }
async fn post_foo(Json(payload): Json<User>) -> &'static str { println!("{:?}", payload); "abab" }
async fn foo_bar() -> &'static str { "abab" }
|
🐳 🦀rust+docker
接下来是选择一个连接并操作Docker的rust第三方库:
| 库 |
github star量 |
issuee |
pr |
开发者 |
文档完善 |
开源协议 |
| bollard |
693 |
28 |
4 |
73 |
|
Apache-2.0 license |
| shiplift |
610 |
47 |
15 |
61 |
|
MIT license |
| dockworker |
56 |
23 |
3 |
31 |
|
– |
信息来自2024年3月14日的数据。
光看名字以为dockworker是最官方的,结果github上star量才56
所以接下来就是对比前两个库的过程
从github CodeFrequency 来看,bollard库明显好,最近还在更新,shiplift从2022年开始就没怎么更新过了。
bollard库的依赖更多,有4页,shiplift 只有两页。
现在看来,选择bollard已经没有什么悬念了。
Author:
Littlefean
License:
Copyright (c) 2019 CC-BY-NC-4.0 LICENSE
Slogan:
仅个人观点,buddy up!