Rust in Everything
基于 axum 0.8.9

在本站中

本站是开源的,仓库在 yuxuetr/rustineverything。这一部分的链接都指向提交 89a61b1(2026-10-23),行号以它为准。那个提交的 Cargo.lock 锁的是 axum 0.8.9、axum-core 0.5.6,与本卷一致;tower-http 是 0.6.11,比本卷的 0.7.1 早一个大版本,差别放在第二页最后一节。本站不直接写 Router::new() 作为根:根 Router 来自 dioxus-server 0.7.9。

  1. dioxus 生成的 Router:dioxus::server::router(App) 把 inventory 收集到的每个 server 函数注册成一条 POST 路由,挂上 public/ 下的文件,把 SSR 设成只认 GET 的 fallback,再 with_state。main.rs 的路由都加在四次 layer 之前,没有漏网的路由;未知地址上的 POST 得到 405 而不是 404;server 函数取 body 时 unwrap,超过 2 MiB 的上传变成 500。
  2. 路由与静态资源:OAuth、支付回调、SEO 三组路由各用了哪些提取器和响应、为什么;静态目录用 nest_service,要加 layer 的 /js、/courses 换成子 Router 加 fallback_service;trailing_slash_mw 与 ServeDir 目录重定向的相互作用;tower-http 0.7 的变化逐条核对,以及 #732 压缩 panic 在 0.6.11 上同样存在。
flowchart TB
  dx["dioxus router"] --> sf["server 函数"]
  dx --> pub["public/ 文件"]
  dx --> ssr["SSR fallback"]
  dx --> mainrs["main.rs"]
  mainrs --> hz["/healthz"]
  mainrs --> mounts["四个 mount"]
  mounts --> layers["四层 layer"]
  layers --> serve["axum::serve"]

💬 关联讨论

发起讨论
加载中...