如何使用 Actix on Rust 创建 POST 方法?
How to create a POST method using Actix on Rust?
我正在研究一种将微服务从 Ruby 移植到 Rust 的方法。
我选择的框架是 Actix(但其他任何人都可以毫无问题地工作)。
现在,我试图了解如何创建一个 POST 方法,该方法接收两个 JSON 作为输入。
这两个 JSON,有两个完全不同的结构,在结构中可以有不同的对象(JSON 对象),稍后存储在两个 PostgreSQL JSONB 字段中。
关于如何构造函数和相关结构的任何提示?我想以字符串的形式接收它,但我不确定这样做是否正确。
非常简单。只需使用具有常规字段的结构和两种数据类型的两个单独的结构声明。
struct FirstT {}
struct SecondT {}
#[derive(Serialize, Deserialize,Debug)]
struct PostData {
first_t: FirstT,
second_t: SecondT
}
async fn submit(data: web::Json<PostData>) -> HttpResponse {
//use data.first_t data.second_t
}
#[actix_rt::main]
async fn main() -> std::io::Result<()> {
HttpServer::new(|| {
App::new()
.data(web::JsonConfig::default().limit(4096))
.service(web::resource("/submit").route(web::post().to(submit)))
})
.bind("127.0.0.1:8000")?
.run()
.await
}
我正在研究一种将微服务从 Ruby 移植到 Rust 的方法。 我选择的框架是 Actix(但其他任何人都可以毫无问题地工作)。 现在,我试图了解如何创建一个 POST 方法,该方法接收两个 JSON 作为输入。 这两个 JSON,有两个完全不同的结构,在结构中可以有不同的对象(JSON 对象),稍后存储在两个 PostgreSQL JSONB 字段中。
关于如何构造函数和相关结构的任何提示?我想以字符串的形式接收它,但我不确定这样做是否正确。
非常简单。只需使用具有常规字段的结构和两种数据类型的两个单独的结构声明。
struct FirstT {}
struct SecondT {}
#[derive(Serialize, Deserialize,Debug)]
struct PostData {
first_t: FirstT,
second_t: SecondT
}
async fn submit(data: web::Json<PostData>) -> HttpResponse {
//use data.first_t data.second_t
}
#[actix_rt::main]
async fn main() -> std::io::Result<()> {
HttpServer::new(|| {
App::new()
.data(web::JsonConfig::default().limit(4096))
.service(web::resource("/submit").route(web::post().to(submit)))
})
.bind("127.0.0.1:8000")?
.run()
.await
}