GoFrame:一行 g.Server() 起一个带路由和校验的 HTTP 服务
【免费下载链接】gfA powerful framework for faster, easier, and more efficient project development.项目地址: https://gitcode.com/GitHub_Trending/gf/gf
GoFrame 是一款全功能的 Go 开发框架。一行g.Server()就能起一个 HTTP 服务,路由、参数解析、校验都内置。
它替你省掉了什么
没有它,你要自己处理:选 HTTP 库、写路由、手解参数、挂校验规则、加载配置、拼装日志,每一样都是一个单独的包,各自要配一遍。用了 GoFrame,这些变成g.Server()、g.DB()这样的一次调用,各组件读同一份配置,实例名统一管理。说白了,你不必整套采用,只拿 ghttp 写服务也成立。
核心能力速览
- HTTP 服务:路由、分组、中间件、静态文件、WebSocket 封装在一个 Server 对象里,不用自己写路由匹配循环(
net/ghttp)。 - 数据库 ORM:查询构造器、事务、连接池、读写分离、分表分库都是现成的,
contrib/drivers/里的数据库驱动按需注册(database/gdb)。 - 参数校验:在结构体标签上声明校验规则,框架在 handler 执行前自动校验,不用逐字段手写判空(
util/gvalid)。 - 配置管理:TOML、JSON、YAML、INI 等格式用
g.Cfg()统一读取,支持监听文件变化做热更新(os/gcfg)。 - 类型转换:字符串、JSON、map、结构体之间的互转不用写胶水代码(
util/gconv)。 - 日志:分级、多目标输出,和其他组件共用同一套配置,全项目风格一致(
os/glog)。
一个最小实践
最典型的场景是起一个 HTTP 服务。main.go 只保留关键行,import 略去(g 来自github.com/gogf/gf/v2/frame/g,ghttp 来自github.com/gogf/gf/v2/net/ghttp):
s := g.Server() s.BindHandler("/", func(r *ghttp.Request) { r.Response.Write("Hello World!") }) s.SetPort(8000) s.Run()跑起来后在浏览器打开 127.0.0.1:8000 就能看到 Hello World。这段代码的价值在第二行:框架递给你的 r 对象已经把 URL 参数、query、表单都解析好,handler 里只写业务逻辑;端口这类设置也可以写进项目的配置文件,不必写死。
和标准方案相比
- 相对标准库 net/http:标准库要自己写路由、自己解析参数、自己叠恢复和日志,GoFrame 在这些维度上让你少写一些代码,代价是抽象多了一层。
- 相对拼装第三方库:配置、日志、数据库、校验常常是不同作者的多个库,各自要配一遍;GoFrame 的组件共用一套配置体系,
g.Cfg()、g.Log()、g.DB()拿到的都是同名同源实例。 - 两者不互斥:HTTP 层构建在 net/http 之上,标准库的概念和现有工具照旧可用。
上手路径
- 在项目里安装框架,要求 Go 1.23 及以上:
go get -u github.com/gogf/gf/v2 - 装 gf 命令行工具,用来脚手架和代码生成:
go install github.com/gogf/gf/cmd/gf/v2@latest - 用命令行生成项目骨架,目录和配置文件一步就绪:
gf init hello - 最后跑通示例,浏览器打开 127.0.0.1:8000,看到 Hello World 即算跑通:
cd hello && gf run main.go
去哪看更多
- README.zh_CN.MD — 中文说明
- CONTRIBUTING.md — 贡献指南
- cmd/gf/ — 命令行工具
- contrib/ — 扩展组件
- net/ghttp/ — 服务源码
先跑通上面的 Hello World,再去 database/gdb 里翻一遍查询怎么写。
【免费下载链接】gfA powerful framework for faster, easier, and more efficient project development.项目地址: https://gitcode.com/GitHub_Trending/gf/gf
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考