如何在actix web中定义URL参数?

如何在actix web中定义URL参数?,web,rust,actix-web,rust-actix,Web,Rust,Actix Web,Rust Actix,在NodeJS中,路由可以定义为: app.get('/:x',(req,res)=>{ console.log(请求参数x) res.sendStatus(200) }); 是否有与actix web等效的或更好的推荐方法 我想上传一个带有id标识符的文件,比如img.save(format!(“{}.png”,id))可以编写 我的当前代码: 使用actix\u multipart::multipart; 使用actix_web::{web,App,HttpServer,Responder

在NodeJS中,路由可以定义为:

app.get('/:x',(req,res)=>{
console.log(请求参数x)
res.sendStatus(200)
});
是否有与actix web等效的或更好的推荐方法

我想上传一个带有
id
标识符的文件,比如
img.save(format!(“{}.png”,id))可以编写

我的当前代码:

使用actix\u multipart::multipart;
使用actix_web::{web,App,HttpServer,Responder};
使用futures_util::{StreamExt,trysteamext};
使用serde::反序列化;
使用image::ImageFormat;
异步fn get()->impl响应程序{
web::HttpResponse::Ok()
.content_type(“text/html;charset=utf-8”)
.body(包括_str!(“./page.html”))
}
异步fn post(mut有效负载:多部分)->impl响应程序{
如果让Ok(Some(mut field))=有效负载。请尝试下一步()。等待{
println!(“字段:{:.?}”,字段);
让content_type=field.content_disposition();
println!(“内容类型:{:.?}”,内容类型);
如果让某些(文件名)=内容\u type.unwrap().get\u文件名(){
println!(“文件名:{:.?}”,文件名);
}
让mut full_vec:vec=vec::new();
而让一些(Ok(chunk))=field.next()等待{
full_vec.append(&mut chunk.to_vec());
}
println!(“full_vec:{}”,full_vec.len());
让img=image::使用_格式从_内存_加载_(&full _vec,ImageFormat::Png)
.expect(“图像加载错误”);
img.save(“img.png”);
}
web::HttpResponse::Ok().finish()
}
#[actix_web::main]
异步fn main()->std::io::Result{
println!(“开始”);
//启动服务器
HttpServer::新建(移动| |{
App::new()
//路线
.route(“/”,web::get().to(get))
.route(“/”,web::post().to(post))
})
.bind(“127.0.0.1:8080”)?
.run()
等候
}
HTML将被模板化,以便在表单操作中具有ID(在更一般的用例中,它们可能是具有不同ID的多个表单)



使用

更改:

  • 异步fn post(mut有效负载:多部分)
  • → <代码>异步fn post(路径:web::path,mut有效负载:多部分)
  • .route(“/”,web::post().to(post))
    .route(“/{id}”,web::post().to(post))
  • → <代码>