最近用Rust写了一个Web框架,因为之前做了多年的Java开发,所以为了能迁移Spring里的一些思想,一是能够简化开发流程,而是能快速集成其他组件。
目前完成了这些功能:
- 宏路由: 对Auxm做了封装,提供了宏路由,例如
#[controller]、#[get]、#[post]等等 - IoC + DI:引入容器和依赖注入模式,#[component] / #[config] 提供声明式注入
- 配置管理 — 支持多 Profile 切换
- 中间件 — 对Auxm做了封装,支持全局/路径级中间件,内置 CORS、日志、Panic 恢复、统一响应等
- 请求处理 — JSON / Query / Form / Header 提取器,Multipart 上传,SSE 推送
- 错误处理 — #[derive(HttpError)] 映射 HTTP 状态码
- 数据库 — 连接池、#[sql] 宏,兼容MyBatis的XML写法、#[tx] 声明式事务
- 缓存 — Memory / Sled / Redis 统一 API
项目地址:https://github.com/xgpxg/webr/ 文档地址:https://xgpxg.github.io/webr/
目前还在快速迭代阶段,API可能不稳定,感兴趣的同学也欢迎尝试。
1
共 5 条评论, 1 页
评论区
写评论如果大家更喜欢原生的Web框架,那么跳过这个直接用原生的Axum就好,这个的目的就做集成,争取做到开箱即用,也还在不断调整中。不过看大家都不喜欢Ioc和DI,如果看面有更好的方案也会考虑把这个移除掉。
其他都是可选的feature
--
👇
None: 哈哈 我也想说 集成的东西太多了。如果轻量的话,我只想要 router 和 middleware 其他功能都不想要。
--
👇
IT写轮眼: 既然是想做一个轻量化的框架, 那干嘛又把 IoC + DI:容器和依赖注入模式 引入进来, 平白增加了复杂性和心智负担.
IoC + DI都是很容易理解的东西,并不会增加什么负担,且这两个的目的是为自动配置做准备,方便其他组件的集成。
--
👇
IT写轮眼: 既然是想做一个轻量化的框架, 那干嘛又把 IoC + DI:容器和依赖注入模式 引入进来, 平白增加了复杂性和心智负担.
哈哈 我也想说 集成的东西太多了。如果轻量的话,我只想要 router 和 middleware 其他功能都不想要。
--
👇
IT写轮眼: 既然是想做一个轻量化的框架, 那干嘛又把 IoC + DI:容器和依赖注入模式 引入进来, 平白增加了复杂性和心智负担.
既然是想做一个轻量化的框架, 那干嘛又把 IoC + DI:容器和依赖注入模式 引入进来, 平白增加了复杂性和心智负担.