全书目录

第四十四篇:Rocket 完全指南 —— 火箭发射控制塔宇宙

第六章:参数提取 —— 发射单上的字段,不该靠手工抄录

1 分钟 293 字 第 815 / 962 个阅读单元

Rocket 的 handler 参数,不只是普通函数参数。

很多时候,它们代表:

  • 路径参数
  • 查询参数
  • 表单
  • JSON
  • Header 上下文
  • Cookie
  • 状态对象
  • 自定义检查结果

这就像火箭发射前,控制台拿到的不是一团原始纸张,而是已经整理好的:

  • 发射编号
  • 载荷型号
  • 发射窗口时间
  • 当前值班负责人
  • 安全许可状态

比如路径参数:

rust
#[get("/permits/<id>")]
fn permit(id: u64) -> String {
    format!("permit {}", id)
}

比如查询字符串:

rust
use rocket::form::FromForm;

#[derive(FromForm)]
struct SearchQuery {
    status: Option<String>,
    page: Option<u32>,
}

#[get("/permits?<query..>")]
fn search(query: SearchQuery) -> String {
    format!(
        "status={:?}, page={:?}",
        query.status,
        query.page
    )
}

?<query..> 很有 Rocket 味道。

它的意思像:

把这份查询单整体交给某个检查员按结构入档。

不是你在 handler 里手写:

  • 先取 query string
  • 再 split
  • 再 parse
  • 再兜底

而是让框架先按清单做完。