axum

axum

人体工学、高性能的Rust Web框架

axum是一个注重人体工学和模块化的Rust Web框架。它特色包括无宏路由API、声明式请求解析、简洁的错误处理和高效的响应生成。axum集成了Tower和Tower-HTTP生态系统,提供丰富的中间件和服务。框架支持Rust 1.66+,提供详细文档和示例,适合开发现代高效的Web应用。axum的设计理念使其在保持高性能的同时,也确保了开发体验的友好性。

axumWeb框架Rust异步中间件Github开源项目

axum

axum是一个专注于人体工程学和模块化的Web应用框架。

构建状态 Crates.io 文档

关于此crate的更多信息可以在crate文档中找到。

主要特性

  • 使用无宏API将请求路由到处理程序。
  • 使用提取器声明式解析请求。
  • 简单且可预测的错误处理模型。
  • 以最少的样板代码生成响应。
  • 充分利用towertower-http生态系统的中间件、服务和实用工具。

特别是最后一点是axum区别于其他框架的地方。axum没有自己的中间件系统,而是使用tower::Service。这意味着axum可以免费获得超时、跟踪、压缩、授权等功能。它还使您能够与使用hypertonic编写的应用程序共享中间件。

使用示例

use axum::{ routing::{get, post}, http::StatusCode, Json, Router, }; use serde::{Deserialize, Serialize}; #[tokio::main] async fn main() { // 初始化跟踪 tracing_subscriber::fmt::init(); // 构建带有路由的应用程序 let app = Router::new() // `GET /` 指向 `root` .route("/", get(root)) // `POST /users` 指向 `create_user` .route("/users", post(create_user)); // 使用hyper运行我们的应用,在全局3000端口上监听 let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap(); axum::serve(listener, app).await.unwrap(); } // 响应静态字符串的基本处理程序 async fn root() -> &'static str { "Hello, World!" } async fn create_user( // 这个参数告诉axum将请求体解析为 // JSON格式的`CreateUser`类型 Json(payload): Json<CreateUser>, ) -> (StatusCode, Json<User>) { // 在这里插入您的应用程序逻辑 let user = User { id: 1337, username: payload.username, }; // 这将被转换为JSON响应 // 状态码为`201 Created` (StatusCode::CREATED, Json(user)) } // 我们的`create_user`处理程序的输入 #[derive(Deserialize)] struct CreateUser { username: String, } // 我们的`create_user`处理程序的输出 #[derive(Serialize)] struct User { id: u64, username: String, }

您可以在示例目录中找到这个示例以及其他示例项目。

crate文档中可以找到更多示例。

性能

axumhyper之上的一个相对轻量级的层,几乎不增加额外开销。因此,axum的性能与hyper相当。您可以在这里这里找到基准测试。

安全性

这个crate使用#![forbid(unsafe_code)]来确保所有内容都是用100%安全的Rust实现的。

最低支持的Rust版本

axum的MSRV是1.66。

示例

examples文件夹包含了如何使用axum的各种示例。docs也提供了许多代码片段和示例。对于完整的示例,请查看社区维护的展示项目教程

获取帮助

axum的仓库中,我们还有许多示例展示了如何将所有内容组合在一起。社区维护的展示项目教程也演示了如何将axum用于实际应用。您也可以在Discord频道中提问或开启一个讨论

社区项目

这里可以找到使用axum构建的社区维护的crate和项目列表。

贡献

🎈 感谢您帮助改进项目!我们非常高兴有您的参与!我们有一个贡献指南来帮助您参与axum项目。

许可证

本项目采用MIT许可证

贡献

除非您明确声明,否则您有意提交以包含在axum中的任何贡献均应按MIT许可证授权,无任何附加条款或条件。

编辑推荐精选

博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
商汤小浣熊

商汤小浣熊

最强AI数据分析助手

小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。

imini AI

imini AI

像人一样思考的AI智能体

imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。

下拉加载更多