You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust首次开发:如何解析HTTP请求中的查询参数

Rust解析HTTP查询参数

方法一:使用url crate(推荐)

url crate是Rust生态中处理URL的常用工具,能轻松完成查询参数的解析与解码,适合新手快速上手。

  1. 在Cargo.toml中添加依赖:
[dependencies]
url = "2.5"
  1. 示例代码:
use url::Url;

fn main() {
    let url_str = "http://someUrl.com?param1=123&param2=345";
    // 解析URL,失败时抛出错误
    let url = Url::parse(url_str).expect("无效的URL格式");
    
    // 获取所有查询参数的键值对
    let query_pairs = url.query_pairs();
    
    // 遍历并打印所有参数
    for (key, value) in query_pairs {
        println!("{}: {}", key, value);
    }
    
    // 直接获取单个指定参数
    if let Some(param1) = url.query_pairs().find(|(k, _)| k == "param1").map(|(_, v)| v) {
        println!("param1的值:{}", param1);
    }
    if let Some(param2) = url.query_pairs().find(|(k, _)| k == "param2").map(|(_, v)| v) {
        println!("param2的值:{}", param2);
    }
}

方法二:手动解析(仅作了解,不推荐)

如果不想依赖第三方库,可以手动拆分URL的查询部分,但这种方式无法自动处理URL编码(比如%20这类转义字符),仅适合简单场景:

fn main() {
    let url_str = "http://someUrl.com?param1=123&param2=345";
    // 拆分出URL后的查询参数部分
    let query_part = url_str.split('?').nth(1).expect("URL无查询参数");
    
    // 拆分每个键值对并打印
    for pair in query_part.split('&') {
        if let Some((key, value)) = pair.split_once('=') {
            println!("{}: {}", key, value);
        }
    }
    
    // 直接获取param1的值
    let param1_value = query_part.split('&')
        .find(|p| p.starts_with("param1="))
        .map(|p| p.split_once('=').unwrap().1)
        .expect("未找到param1参数");
    println!("param1的值:{}", param1_value);
}

内容的提问来源于stack exchange,提问作者aditya parkhe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 23:47:49