news 2026/7/13 2:55:14

一个基于Axum实现的,更符合Java开发者习惯的Rust生态的Web框架

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一个基于Axum实现的,更符合Java开发者习惯的Rust生态的Web框架

WebR 简介

一个轻量的 Rust Web 框架,基于 Axum 构建。提供宏驱动控制器、自动依赖注入、多文件配置管理和中间件系统,旨在简化 Rust 中的 Web 开发。

WebR 引入了 Java 系的框架中的 DI、Controller、Component和自动配置等概念,在保证性能的同时,帮助开发者更快速的使用 Rust 构建 Web 应用。

同时也内置了轻量的ORM,可通过类似Mybatis XML实现动态SQL。

开源地址:https://github.com/xgpxg/webr
文档:https://xgpxg.github.io/webr

特性概览

  • 宏驱动路由 — #[controller] / #[get] / #[post],零样板
  • DI + 配置管理 — #[component] / #[config] 声明式注入,多 Profile 切换
  • 中间件 — 全局/路径级中间件,内置 CORS、日志、Panic 恢复
  • 请求处理 — JSON / Query / Form / Header 提取器,Multipart 上传,SSE 推送
  • 错误处理 — #[derive(HttpError)] 快速映射 HTTP 状态码
  • 数据库 — 连接池、#[sql] 动态查询、#[tx] 事务
  • 缓存 — Memory / Sled / Redis 统一 API

快速开始

创建第一个 WebR 应用并运行起来。

  1. 创建项目
cargonew my-appcdmy-app
  1. 添加依赖
    编辑Cargo.toml
[dependencies] webr = { version = "0.1" }
  1. 创建配置文件
    config/application.toml
[server] port = 8080
  1. 编写代码
    src/main.rs
usewebr::prelude::*;#[controller]pubstructHelloController;#[controller]implHelloController{#[get("/")]asyncfnindex(&self)->String{"hello world".to_string()}}// 入口函数#[webr::main]asyncfnmain(_app:&mutAppBuilder)->Result<()>{Ok(())}
  1. 启动
cargorun

如果你看到以下输出,则说明启动成功:

2026-07-06T06:29:41.284926Z INFO webr_web::app: Starting WebR application... 2026-07-06T06:29:41.285005Z INFO webr_web::app: Configuration loaded: profile=dev, files=[config/application.toml] 2026-07-06T06:29:41.285337Z INFO webr_web::app: Route mappings: 2026-07-06T06:29:41.285390Z INFO webr_web::app: GET / → HelloController 2026-07-06T06:29:41.285633Z INFO webr_web::app: WebR started on http://0.0.0.0:8080

访问 http://localhost:8080/ 查看结果。


项目目前仍处于开发版本,生产不可用,欢迎感兴趣的同学提PR。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/13 2:54:32

取整函数实战:金融计算与游戏开发中的5个典型场景与避坑指南

取整函数实战&#xff1a;金融计算与游戏开发中的5个典型场景与避坑指南在数值处理的世界里&#xff0c;取整函数就像瑞士军刀中的精密工具——看似简单却能在关键时刻解决复杂问题。无论是金融系统中精确到分毫的利息计算&#xff0c;还是游戏引擎里角色移动的像素级定位&…

作者头像 李华
网站建设 2026/7/13 2:53:37

Linux日志排查实战:从基础命令到生产环境故障定位

线上环境突发报错时&#xff0c;快速定位问题根源是每个后端开发和运维人员的必备技能。面对海量日志文件&#xff0c;如何高效查找关键错误信息&#xff0c;而不是盲目地翻看日志&#xff0c;直接决定了故障恢复的速度。本文将分享一套实用的 Linux 日志排查方法论&#xff0c…

作者头像 李华
网站建设 2026/7/13 2:52:16

普通人应该追求什么?健康、能力、良好的人际关系、有意义的目标

这是一个很大的问题。不同的人会给出不同答案&#xff0c;但如果从长期幸福、成长和现实可行性来看&#xff0c;我认为普通人可以追求四样东西&#xff1a; 1. 健康——所有目标的基础 没有健康&#xff0c;再多的财富、学历、地位都很难享受。 包括&#xff1a; 保持规律作息锻…

作者头像 李华
网站建设 2026/7/13 2:52:12

TS2007FC类D音频放大器与MK51DN512CLQ10微控制器的高效音频系统设计

1. 音频放大系统设计概述在嵌入式音频系统设计中&#xff0c;TS2007FC类D音频放大器与MK51DN512CLQ10微控制器的组合堪称黄金搭档。这套方案特别适合需要高保真音频输出的便携式设备、智能家居音响系统和专业音频处理设备。TS2007FC作为STMicroelectronics推出的无滤波类D放大器…

作者头像 李华
网站建设 2026/7/13 2:52:11

基于 YOLO11 的学生课堂行为检测:从数据集构建到模型训练全流程

基于 YOLO11 的学生课堂行为检测&#xff1a;从数据集构建到模型训练全流程 一、场景背景 在智慧教育领域&#xff0c;利用计算机视觉技术自动识别学生课堂行为&#xff0c;已成为教学质量分析和课堂管理的重要辅助手段。传统的课堂观察依赖人工记录&#xff0c;效率低且难以量…

作者头像 李华
网站建设 2026/7/13 2:51:43

HarmonyOS APP实战-画图APP - 第6篇:形状切换与UI优化

HarmonyOS APP实战-画图APP - 第6篇&#xff1a;切换绘制模式与交互反馈 1. 开篇 在上一篇中&#xff0c;我们为画图APP实现了完整的画笔属性调节功能&#xff1a;通过色盘选择颜色、滑块控制粗细和透明度&#xff0c;并将这些属性绑定到Pen对象&#xff0c;使得所有后续绘制的…

作者头像 李华