简介
VEF Framework 是一个围绕“资源模型”组织应用的 Go Web 框架,底层基于 Uber FX、Fiber 和 Bun,适合搭建内部平台、管理后台和服务型 API。
理解 VEF 最有效的方式,不是先看路由,而是先看运行时形状:
vef.Run(...)启动一条固定的模块装配链。- 你通过 FX group 注册自己的资源、中间件和行为。
- API 引擎从这些资源里收集操作,再挂载成 RPC 或 REST 端点。
- handler 参数由框架自动注入,来源包括请求上下文、解码后的 params/meta,以及容器里的服务。
所以,VEF 本质上不是一个“路由小工具”,也不只是一个“CRUD 库”,而是一套围绕显式资源和稳定默认值组织应用的框架。
框架默认替你做了什么
vef.Run(...) 会按照固定顺序装配一条模块流水线;完整启动顺序及各阶段的保证见 应用生命周期。
这意味着框架默认已经对很多运行时行为做了约定:
- API 默认版本:
v1 - API 默认认证:Bearer token
- 默认请求超时:
30s - 默认限流:
100次请求 /5m - 默认响应信封:
result.Result - 默认存储提供者:未配置时回退到内存存储
这些结论来自运行时真实行为,而不是文档层面的约定描述。
RPC 和 REST 都是一等能力
VEF 同时支持两种 API 风格:
- RPC 资源,统一走
POST /api - REST 资源,挂载到
/api/<resource>
它们必须显式声明:
api.NewRPCResource("sys/user", ...)
api.NewRESTResource("users", ...)
VEF 不会 从一个 RPC 资源自动生成 REST 路由。如果你需要两套风格,就应当明确地定义两套资源。
开发者最常接触的 API
大多数业务开发只会频繁接触这几个公开入口:
vef.Run(...)vef.Module(...)vef.ProvideAPIResource(...)api.NewRPCResource(...)api.NewRESTResource(...)api.OperationSpeccrud.NewCreate(...)、crud.NewFindPage(...)等 CRUD builderorm.DBresult.Ok(...)和result.Err(...)security包中的扩展接口,比如UserLoader、PermissionChecker、RolePermissionsLoader
其余内部模块,大多是在为这些用户侧入口服务。
开箱即用的内置资源
框架当前已经内置了几类可直接使用的资源和模块:
security/auth:登录、刷新令牌、登出、挑战流程解析、可选的用户信息读取sys/storage:分片上传(init / part / list / complete / abort)以及/storage/files/<key>下载代理sys/schema:数据库 schema 检查sys/monitor:运行时与主机监控- MCP 中间件与 MCP server 集成
如果这些能力符合你的需求,通常不需要从零重写。
从哪里开始
大多数应用会按这个顺序接触框架:
- 安装 —— 环境和依赖准备
- 快速开始 —— 真正跑起一个最小应用
- 你的第一个 CRUD API —— 从模型、建表、资源到 curl 验证的完整闭环
- 核心概念 —— 模块、依赖注入和应用生命周期如何配合
- 构建 API —— 资源、操作、路由与参数绑定
- 数据访问 —— 模型、搜索过滤、CRUD、SQL 构造器与事务
- 安全 —— 认证、授权与登录加固
之后可以按需求分支阅读:
- 数据工具 —— 表达式引擎、mold 数据清洗、i18n、表格导入导出
- 基础设施 —— 缓存、定时任务、序列、事件总线、存储、schema、监控
- AI 集成 —— AI 相关能力与 MCP
- 审批 —— 工作流/审批引擎
- 进阶 —— CQRS、自定义参数解析器、CLI 工具
- 工具库 —— 各类小而专的辅助包
- 规范 —— 项目结构与数据库规范
- 参考 —— 配置项、内置资源与 API 索引
如果你是第一次接触 VEF,建议下一步直接看 安装。