Skip to main content

Module request

Module request 

Source
Expand description

请求模块 — postData/getData/file/upload

对齐 PHP $this->request->post() / $this->request->get() / $this->request->param()。 强制 POST,不使用 GET 分支(遵循项目规范)。

§PHP 对齐

PHP 方法行为Rust 等价
$this->request->param()合并 POST + GET + route 参数fetch_post_data(合并 body + query)
$this->request->post()仅 POST bodyfetch_body_data
$this->request->get()仅 GET queryfetch_query_data
postData($key)param($key.'/a')(强制数组)fetch_post_data_by_key
getData($key)get($key)fetch_query_data_by_key

§注意

  • param() 在 PHP 中还会合并 route 参数({id} 等),在 axum 中这些由 handler 参数捕获, 所以本模块仅合并 body + query。
  • /a 强制数组在 Rust 中不适用(强类型语言),调用方需自行处理类型转换。
  • 本模块提供低层数据获取;上层控制器在 controller 模块实现 postData() 方法时封装。

§用法

use sz_rust_http_facade::request::fetch_post_data;
use axum::http::Request;
use axum::body::Body;

async fn handler(req: Request<Body>) {
    // 合并 body + query
    let data = fetch_post_data(req).await.unwrap();
    println!("{}", data);
}

Functions§

fetch_body_data
从请求中仅获取 body 参数(不含 query)
fetch_post_data
从请求中获取合并参数(body + query)
fetch_post_data_by_key
从请求中获取单个合并参数(body + query)
fetch_query_data
从请求中仅获取 query 参数
fetch_query_data_by_key
从请求中仅获取 query 参数的单个字段
parse_query
解析 query string 为 HashMap<String, String>
url_decode
简单 URL 解码(支持 %XX 与 + → space)