You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Axum处理器返回&'static str可显示,print!/format!却无法在网页输出?

Axum路由无内容返回的原因与解决办法

问题本质

Axum的路由处理函数必须返回可转换为HTTP响应的类型:

  • root函数返回&'static str时,Axum会自动将其包装成带200状态码、文本响应体的HTTP响应,浏览器能正常解析并显示内容。
  • avi函数无返回值(等价于返回()),Axum对()的默认处理是返回204 No Content响应——这类响应没有响应体,所以浏览器页面显示空白。另外,print!是向服务器控制台输出内容,和发送给客户端的HTTP响应完全无关,客户端根本拿不到这部分内容。

解决办法

要让客户端收到内容,需让路由函数返回可生成有效响应的类型,比如:

  1. 返回静态字符串(最简单的方式):
async fn avi() -> &'static str {
    "Functional call is avi"
}
  1. 返回动态生成的字符串:
async fn avi() -> String {
    let content = "Functional call is avi".to_string();
    // 若需要在服务器控制台打印,单独用println!
    println!("{}", content);
    content
}
  1. 如需更复杂的响应(比如HTML、JSON),可以使用Axum提供的响应类型,如axum::response::Html:
use axum::response::Html;

async fn avi() -> Html<&'static str> {
    Html("<h1>Functional call is avi</h1>")
}

内容的提问来源于stack exchange,提问作者Aviral Srivastava

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 21:27:06