← 学习中心

提取器与中间件

Path/Json/State 与 Tower 中间件

本节你将能

使用 Path、Json、State 提取器,并挂载一层中间件。

直觉模型

提取器是「从请求里按类型取材料」;中间件是「进出都要过的安检带」(日志、超时、CORS、鉴权)。

核心要点

  • Path<(u64,)>、Json<T>、State<AppState>
  • layer(TraceLayer::new_for_http()) 等 Tower 中间件
  • 共享状态用 Arc 包进 State,注意 Send + Sync
use axum::{extract::{Path, State}, Json};
#[derive(Clone)]
struct AppState { /* pool, cfg */ }
async fn get_user(Path(id): Path, State(st): State) -> Json {
    Json(serde_json::json!({ "id": id }))
}

常见误区

把重资源直接 clone 进每个请求——应共享连接池(Arc)。

动手

实现 POST /echo 接收 JSON 原样返回,并加请求日志层。

互动

测验:State 适合放什么。

本节小结

下一节用 SQLx 访问数据库。

提取器与中间件 - 生命科学与前沿科技学习平台 | 必学必会