用途:帮助在 Axum 中正确构造处理器返回值。处理器返回值经 IntoResponse 转为 http::Response,返回类型必须实现该 trait,否则无法满足 Handler 约束。
主要能力:说明各类返回类型对应的状态码与 Content-Type,如 Json<T>、Html<T>、Form<T>、StatusCode、NoContent、Redirect、Response 及 Result<T,E>;介绍 IntoResponseParts 用于修改响应头与扩展而不设置状态码和正文;说明元组组合规则——StatusCode 放首位、正文放最后、其余元素须实现 IntoResponseParts;区分 Redirect::to(303)、Redirect::temporary(307)、Redirect::permanent(308),Axum 不提供 301/302 构造器;介绍 CookieJar、SignedCookieJar、PrivateCookieJar 及 AppendHeaders 追加多个 Set-Cookie。
使用方式:返回 JSON 用 Json(...) 包裹可序列化结构体;状态、头、正文用元组一次返回;自定义错误类型实现 IntoResponse 后可用 ? 运算符;Cookie 需从处理器返回修改后的 jar,因为 add/remove 会消费并返回新 jar。
限制:Axum 0.8 移除了泛型 body 参数,正文必须为 axum::body::Body,hyper::Body 不再导出;裸结构体或整数不实现 IntoResponse;正文必须是元组最后一个元素;Cookie 功能依赖 axum-extra 的 cookie、cookie-signed、cookie-private 特性,签名与私有 jar 需要 Key。具体版本差异与完整示例见其参考文档。