Creare una web api in Rust con Salvo
Salvo è uno dei vari web framework per Rust.
In questo articolo vediamo un esempio introduttivo.
Prima di tutto aggiungiamo queste dipendenze dal cargo.toml e compiliamo:
[dependencies]
salvo = "0.68.4"
tokio = { version = "1", features = ["macros"] }
tracing = "0.1"
tracing-subscriber = "0.3"
serde = "1.0.97"
Qui sotto un esempio di codice in cui abbiamo una rotta principale che ci risponde in plain text; poi ne abbiamo aggiunta una con un path (così da fare eventuali raggruppamenti) che ci risponde con un JSON:
use salvo::prelude::*;
use serde::Serialize;
#[derive(Serialize, Debug)]
struct Utente {
name: String,
}
#[handler]
async fn hello() -> &'static str {
"Hello World"
}
#[handler]
async fn lista_utenti(res: &mut Response) {
let utenti = vec![
Utente {
name: "Matteo".to_string(),
},
Utente {
name: "Francesca".to_string(),
},
];
res.render(Json(utenti));
}
#[tokio::main]
async fn main() {
tracing_subscriber::fmt().init();
let router = Router::new()
.get(hello)
.push(Router::with_path("utenti").get(lista_utenti));
let acceptor = TcpListener::new("127.0.0.1:5800").bind().await;
Server::new(acceptor).serve(router).await;
}
Enjoy!
rust cargo salvo json
Commentami!