use axum::Json; use axum::extract::Request; use axum::http::header::HeaderMap; use axum::http::StatusCode; use serde::{Serialize, Deserialize}; use serde_json::{Value, json}; #[derive(Deserialize)] pub struct Info { name: String, age: u8, } pub async fn post_foo(info:Json, header: HeaderMap) -> Result, StatusCode> { let body = info; println!("name:{:?}, apge:{}, {header:?}", body.name, body.age); // 返回包含请求信息的 JSON 响应 Ok(Json(json!({"data": 42}))) } .route("/foo", get(api::get_foo).post(api::post_foo)) 各位好,我用rust的axum进行学习,现在有个问题,我提供的代码 第一个函数传了2个参数,一个是info,一个是header,问题是:第一个info加上后没问题,但函数如果加上第二个参数 下边一行.route中的api::post_foo就会报错,如果我把两个参数任意一个参数去掉,都不会报错。所以我就不知道该怎么办了,我其实是想拿到post的json数据,以及查看header,甚至想看request的一些数据。现在不知道怎么解决,还清各位大佬指点迷津,谢谢 补充: 我打该明白 因为两个参数类型一样,所以不让传,但有些时候,我需要获取request里的一些数据,做验证,以及使用用户传过来的参数做有业务,那么如何可以同时获取这些数据呢?求教大佬,找了好多资料都找不到,也可能是我能力还比较差,看不懂文档,请各位大佬帮助