首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在actix-web中接收具有相同名称的多个查询参数?

问如何在actix-web中接收具有相同名称的多个查询参数?
EN

Stack Overflow用户
提问于 2020-09-11 17:36:40
回答 1查看 919关注 0票数 1

在如何接收唯一命名查询参数的actix-web documentation is only an example中。

但是如何接收同名的多个查询参数呢?例如:

代码语言:javascript
复制
http://localhost:8088/test?id=1&id=2&id=3

如何更改以下代码以使其接受多个I,以及如何读取它们?

代码语言:javascript
复制
use actix_web::web;
use serde::Deserialize;

#[derive(Deserialize)]
struct Info {
    id: String,
}

#[get("/test")]
async fn index(info: web::Query<Info>) -> impl Responder  {
    println!("Id: {}!", info.id);
    
    "ok"
}
EN

回答 1

Stack Overflow用户

发布于 2020-09-11 19:07:13

看一看this question,你想要什么似乎没有一个明确的标准。我不知道actix是否有这样的提取器。我会在我的Deserialize impl上工作。

代码语言:javascript
复制
use std::fmt;
use serde::de::{ Deserialize, Deserializer, Visitor, MapAccess};

impl<'de> Deserialize<'de> for Info {
    fn deserialize<D>(deserializer: D) -> Result<Info, D::Error>
    where
        D: Deserializer<'de>,
    {
        struct FieldVisitor;

        impl<'de> Visitor<'de> for FieldVisitor {
            type Value = Info;

            fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
                formatter.write_str("`id`")
            }

            fn visit_map<V>(self, mut map: V) -> Result<Info, V::Error>
            where
                V: MapAccess<'de>
            {
                let mut ids:  Vec<String> = Vec::default();
                while let Some(key) = map.next_key()? {
                    match key {
                        "id" => {
                            ids.push(map.next_value::<String>()?)
                        }
                        _ => unreachable!()
                    }
                }
                Ok(Info {
                    id: ids
                })
            }
        }
        deserializer.deserialize_identifier(FieldVisitor)
    }
}

#[derive(Debug)]
struct Info {
    id: Vec<String>,
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63844460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档