Faygo概述
Faygo使用全新架构,是最合适开发API接口的GoWeb框架。用户只需定义一个structHadler,就能自动绑定、验证请求参数并生成在线API文档。
最新版本版本号v1.0
安装要求GoVersio≥1.8
快速使用方式一源码下载
go get -u -v github.com/herylee2c/faygo方式二部署工具(Gotofay)
go get -u -v github.com/herylee2c/fayfay commad [argumets]The commads are: ew 创建、编译和运行(监控文件变化)一个新的faygo项目 ru 编译和运行(监控文件变化)任意一个已存在的golag项目fay ew appame [apptpl] appame 指定新faygo项目的创建目录 apptpl 指定一个faygo项目模板(可选)fay ru [appame] appame 指定待运行的golag项目路径(可选)框架特性一个 structHadler 搞定多件事:
定义Hadler/Middleware
绑定与验证请求参数
生成Swagger2.0API在线文档
数据库ORM映射
Hadler与Middleware完全相同,都是实现Hadler接口(fuc或struct类型),共同构成路由操作链,只是概念层面的说法不同
支持多种网络类型:
网络类型配置et_types值HTTPhttpHTTPS/HTTP2(TLS)httpsHTTPS/HTTP2(Let'sEcryptTLS)letsecryptHTTPS/HTTP2(Let'sEcryptTLSoUNIXsocket)uix_letsecryptHTTP(UNIXsocket)uix_httpHTTPS/HTTP2(TLSoUNIXsocket)uix_https支持单服务单监听、单服务多监听、多服务多监听等,多个服务的配置信息相互独立
基于 httprouter 开发高性能路由,支持链式与树形两种注册风格,支持灵活的静态文件路由(如DirFS、RederFS、MarkdowFS等)
支持平滑关闭、平滑升级,提供fay工具进行新建项目、热编译、元编程
采用最强大的 pogo2 作为HTML渲染引擎
提供近似LRU的文件缓存功能,主要用途是静态文件缓存
跨平台的彩色日志系统,且同时支持cosole和file两种输出形式(可以同时使用)
提供Sessio管理功能
支持Gzip全局配置
提供XSRF跨站请求伪造安全过滤
大多数功能尽量使用简洁的ii进行配置来避免不必要的重新编译,并且这些配置文件支持自动补填默认值
提供 gorm、xorm、sqlx、directSQL、Websocket、ii 、httpcliet 等很多常用扩展包
简单示例
package maiimport ( // "mime/multipart" "time" "github.com/herylee2c/faygo")type Idex struct { Id it `param:""` Title strig `param:""` Paragraph []strig `param:""` Cookie strig `param:""` // Picture *multipart.FileHeader `param:""`}fuc (i *Idex) Serve(ctx *faygo.Cotext) error { if ctx.CookieParam("faygoID") == "" { ctx.SetCookie("faygoID", time.Now().Strig()) } retur ctx.JSON(200, i)}fuc mai() { app := faygo.New("myapp", "0.1") // Register the route i a chai style app.GET("/idex/:id", ew(Idex)) // Register the route i a tree style // app.Route( // app.NewGET("/idex/:id", ew(Idex)), // ) // Start the service faygo.Ru()}/*http GET: https://localhost:8080/idex/1?title=test&p=abc&p=xyzrespose: { "Id": 1, "Title": "test", "Paragraph": [ "abc", "xyz" ], "Cookie": "2016-11-13 01:14:40.9038005 +0800 CST" }*/
评论