我目前正在尝试在actix web中制作我的api并获取url的当前参数
我当前的 ApiParams
#[serde_with::skip_serializing_none]
#[derive(Debug,Serialize,Deserialize)]
pub struct ApiParams {
pub name: Option<String>,
pub fname: Option<String>,
pub categories: Option<Vec<String>>
}
impl std::fmt::Display for ApiParams {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let a = serde_json::to_string_pretty(&self).unwrap();
write!(f, "{}", a)
}
}
当我去
http://localhost:1000/api/v1/?name=2&fname=21
作品但是当我添加参数类别时,比如http...v1/?name=2&categories=121
程序响应:
查询反序列化错误:无效类型:字符串“121”,需要一个序列
#[get("/")]
pub async fn index(web::Query(params): web::Query<ApiParams>) -> impl Responder {
println!("{}", params);
HttpResponse::Ok().content_type("application/json").json(json!({"test": "test"}))
}
尝试在 actix 网络文档中搜索 Vec,但我没有找到它
我期望当我到达
&categories=1,2
或至少&categories=1&categories=2
时类别应该是一个Vec /类别列表