actix_web如何處理JSON請求? react json view
Vevor工具優(yōu)選跨境問答2025-07-158900
在Actix Web中,處理JSON請求需要使用json
middleware。以下是一個簡單的示例:
use actix_web::{web, App, HttpServer, Responder};
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Serialize)]
struct Person {
name: String,
age: i32,
}
#[derive(Deserialize)]
struct JsonResponse {
message: String,
}
#[actix_rt::main]
async fn main() -> std::io::Result<()> {
let handler = web::get().to_handler(|req| {
let mut person = Person {
name: req.path().to_string(),
age: 18,
};
if let Some(person_data) = req.body()?.as_bytes() {
let deserialized_person = serde_json::from_slice(person_data).unwrap();
person = deserialized_person;
}
let json_response = JsonResponse {
message: format!("Hello {}!", person.name),
};
Ok(json_response)
});
HttpServer::new(|| {
App::new()
.route("/", web::get().to(handler))
.service(PersonService::new())
})
.bind("0.0.0.0:8080")?
.run()
.await?;
Ok(())
}
#[derive(Serialize)]
struct PersonService {
persons: HashMap<String, Person>,
}
impl PersonService {
fn new() -> Self {
PersonService {
persons: HashMap::new(),
}
}
}
在這個示例中,我們首先定義了一個Person
結(jié)構(gòu)體和一個JsonResponse
結(jié)構(gòu)體。然后,我們創(chuàng)建了一個JsonResponse
middleware來處理JSON請求。接下來,我們創(chuàng)建了一個新的PersonService
來存儲和檢索人員數(shù)據(jù)。最后,我們使用HttpServer
和App
構(gòu)建了一個簡單的Web服務(wù)器,并綁定到端口8080。
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。