url 参数如果 Vec in actix web

问题描述 投票:0回答:0

我目前正在尝试在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 /类别列表
api url rust actix-web rust-actix
© www.soinside.com 2019 - 2024. All rights reserved.