Rust:axum学习笔记(5) 处理静态资源
接上一篇继续,静态资源比如css/js/jpg等,一般不需要服务端做额外的业务处理,直接透传给浏览器就行,axum可以指定将某个目录指定为静态资源,参考下面的代码:
let app = Router::new()
.nest(
"/static",
get_service(ServeDir::new(".")).handle_error(|error: std::io::Error| async move {
(
StatusCode::INTERNAL_SERVER_ERROR,
format!("Unhandled internal error: {}", error),
)
}),
)
这一段的意思是将当前目录设置为静态资源目录,用/static访问,当然这个.也可以换成绝对路径。

假设项目的结构如上,要访问static_file/src/main.rs,直接用http://localhost:3000/static/static_file/src/main.rs 访问,效果如下:

最后附加上完整代码:
cargo.toml
[package]
name = "static_file"
version = "0.1.0"
edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies]
axum = {version = "0.4.3", features = ["headers"] }
tokio = { version = "1.0", features = ["full"] }
tracing = "0.1"
tracing-subscriber = { version="0.3", features = ["env-filter"] }
tower-http = { version = "0.2.0", features = ["fs", "trace"] }
main.rs
use axum::{http::StatusCode, routing::{get_service,get}, Router};
use std::net::SocketAddr;
use tower_http::{services::ServeDir, trace::TraceLayer};
#[tokio::main]
async fn main() {
// Set the RUST_LOG, if it hasn't been explicitly defined
if std::env::var_os("RUST_LOG").is_none() {
std::env::set_var(
"RUST_LOG",
"example_static_file_server=debug,tower_http=debug",
)
}
tracing_subscriber::fmt::init();
let app = Router::new()
.nest(
"/static",
get_service(ServeDir::new(".")).handle_error(|error: std::io::Error| async move {
(
StatusCode::INTERNAL_SERVER_ERROR,
format!("Unhandled internal error: {}", error),
)
}),
)
.route("/", get(|| async { "Hello, World!" }))
.layer(TraceLayer::new_for_http());
let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
tracing::debug!("listening on {}", addr);
axum::Server::bind(&addr)
.serve(app.into_make_service())
.await
.unwrap();
}
Rust:axum学习笔记(5) 处理静态资源的更多相关文章
- 尚硅谷springboot学习21-web开发-处理静态资源
SpringBoot对静态资源的映射规则 @ConfigurationProperties(prefix = "spring.resources", ignoreUnknownFi ...
- SpringBoot学习5:访问静态资源
springboot默认从项目的resources里面的static目录下或者webapp目录下访问静态资源 方式一:在resources下新建static文件(文件名必须是static) 在浏览器中 ...
- JavaWeb学习笔记——开发动态WEB资源(六)ServletConfig和ServletContext
1.只有在第一次请求服务器产生实例的时候才会调用init()方法,有一种办法能在服务器一启动的时候就加载init()方法. 即服务器启动即加载Servlet,且按数字大小顺序实例化Servlet. 方 ...
- Duilib学习笔记《07》— 资源加载
Duilib的界面表现力能如此丰富,很大程度上得益于贴图描述的简单强大.通过之前的学习及参看相关例子,我们可以发现,在XML布局文件中,不管是窗体背景还是控件,都添加了对应的图片资源以此来美化界面.而 ...
- Rust语言学习笔记(7)
模块 // 兄弟模块 mod network { fn connect() { } } mod client { fn connect() { } } // 父子模块 mod network { fn ...
- [javase学习笔记]-8.6 静态的内存载入
之前几节我们一直在说statickeyword所修饰的静态,那么在程序执行时,内存中static是怎样体现的呢?这一节我们就来看一看. 我们还是先看一个样例.希望我们通过对这个样例的分析让我们刚開始学 ...
- Away3D引擎学习笔记(一)资源加载解析块
前文:Away3D断断续续用了一段时间了,三维相关的很多算法,计算转换还是有点绕,整理些自己觉得还有点意思东西,希望大家有用. 三维开始,Away3D构架你场景那几行代码各处都有,这里就不copy了, ...
- [javase学习笔记]-8.7 静态代码块
这一节我们看一个比較特殊的概念,那就是静态代码块. 前面我们也提到过代码块,就是一段独立的代码空间.那么什么是静态代码块呢?说白了,就是用statickeyword修饰的代码块. 我们来看一个样例: ...
- Java基础学习笔记-类的静态属性和静态方法--待继续补充
程序运行时的内存占用 代码区(code area) 存放代码 数据区(data area) 存放全局数据.静态数据 堆区(heap area) 存放动态申请的数据 栈区(stack area) 存放局 ...
- 0027 Java学习笔记-面向对象-(非静态、静态、局部、匿名)内部类
内部类 内部类就是把一个类写在另一个类的内部 用途: 如果一个类只希望它被某一个类访问,那么可以把它定义在另一个类的内部,并用private修饰 内部类可以访问它所在外部类的private成员:但所在 ...
随机推荐
- 一个日h站的Nday
0x00 前言 今天先来无事的我翻起了qq收藏夹.忽然发现了一个去年EDUSRC群里一个老表发的洞.今天就给大家发出来耍耍. 抵制黄色网站人人有责,打造绿色上网环境. 面对正规网站时候,请不要做非法测 ...
- 工具 | Hacking
0x00 简介 Hacking是一款包含多种渗透测试功能的脚本. 下载地址: Hacking下载:Hacking下载 0x01 功能说明 Brute Force DDos Attack NMap Po ...
- 【HUST】网安纳米|2023年研究生纳米技术考试参考
目录 1 纳米材料是什么 2 纳米材料的结构特性 3 纳米结构的其他特性 4 纳米结构的检测技术 5 纳米材料的应用 打印建议:PPT彩印(这样重点比较突出),每面12张PPT,简单做一下关键词目录, ...
- Allure2+Maven+Testng部署及使用详细教程
AllureReport部署 前言:最近做自动化测试要用到AllureReport生成测试报告,网上逛了一下,发现有很多帖子,但是大家描述的都模棱两可,没有详细的步骤,因此编写此贴对部署方式进行记录; ...
- 信息资源管理综合题之“QS认证是什么标准 和 如何证明已通过QS 和 可否建立自己的生产标准”
一.案例:自2003年起,我国开始对大米.食用植物油等食品进行了一种新的管理制度:食品质量安全市场准入制度,到目前为止,所有经过加工的食品,生产地址在国内的产品全部必须申请生产许可证,经过强制性的检验 ...
- HarmonyOS NEXT开发实战教程--招聘app
这一周忙到起飞,只能在周末发个文章.今天的内容比较简单,是一个招聘app,适合新手友友参考,大佬们可以直接忽略. 看一下效果图: 这是一个比较常见的应用,大家做这类应用建议大家先分析一下应用和页面的结 ...
- Web前端入门第 49 问:CSS offset 路径动画演示
什么是路径动画? 随手画一条不规则的线,让元素按照这条不规则的线运动起来,这就是所谓的路径动画. 前面说过的动画都只能针对某一个 CSS 属性,要想实现路径动画可没办法,路径动画必须借助 CSS3 的 ...
- Java应用出现 Public Key Retrieval is not allowed 报错的常见原因和解决方法
问题现象 Java 应用在运行过程中突然报java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowe ...
- Manim:动画制作背后的魔法
Manim是一个强大的数学动画制作库,它能够帮助我们创建出令人惊叹的动画,无论是用于教学还是娱乐. 不过,对于初学者来说,Manim的内部工作机制可能显得有些复杂. 本文将从整体上简单介绍Manim的 ...
- Pytorch 看起来好像没占gpu的样子的原因
今天好哥们儿赞助的3080到手了,欣喜若狂的装上 然后跑了跑MNIST,看着任务管理器CPU跑100%,GPU跑3%,查了半天解决不了,郁闷了好一会儿.. 后来在https://www.bilibil ...