提取器与中间件
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 访问数据库。