- 授权协议: Apache
- 开发语言: Google Go
- 操作系统: 跨平台
- 软件首页: https://git.oschina.net/henrylee/faygo
- 软件文档: https://github.com/henrylee2cn/faydoc
软件介绍
Faygo
概述
Faygo 使用全新架构,是最合适开发API接口的Go Web框架。用户只需定义一个struct Handler,就能自动绑定、验证请求参数并生成在线API文档。
最新版本
版本号
v1.0
安装要求
Go Version ≥1.8
快速使用
方式一 源码下载
go get -u -v github.com/henrylee2cn/faygo
方式二 部署工具 (Go to fay)
go get -u -v github.com/henrylee2cn/fay
fay command [arguments] The commands are: new 创建、编译和运行(监控文件变化)一个新的faygo项目 run 编译和运行(监控文件变化)任意一个已存在的golang项目 fay new appname [apptpl] appname 指定新faygo项目的创建目录 apptpl 指定一个faygo项目模板(可选) fay run [appname] appname 指定待运行的golang项目路径(可选)
框架特性
一个
struct Handler搞定多件事:定义 Handler/Middleware
绑定与验证请求参数
生成 Swagger2.0 API 在线文档
数据库 ORM 映射
Handler与Middleware完全相同,都是实现Handler接口(
func或struct类型),共同构成路由操作链,只是概念层面的说法不同支持多种网络类型:
| 网络类型 | 配置net_types值 |
|---|---|
| HTTP | http |
| HTTPS/HTTP2(TLS) | https |
| HTTPS/HTTP2(Let's Encrypt TLS) | letsencrypt |
| HTTPS/HTTP2(Let's Encrypt TLS on UNIX socket) | unix_letsencrypt |
| HTTP(UNIX socket) | unix_http |
| HTTPS/HTTP2(TLS on UNIX socket) | unix_https |
支持单服务单监听、单服务多监听、多服务多监听等,多个服务的配置信息相互独立
基于
httprouter开发高性能路由,支持链式与树形两种注册风格,支持灵活的静态文件路由(如DirFS、RenderFS、MarkdownFS等)支持平滑关闭、平滑升级,提供fay工具进行新建项目、热编译、元编程
采用最强大的
pongo2作为HTML渲染引擎提供近似LRU的文件缓存功能,主要用途是静态文件缓存
跨平台的彩色日志系统,且同时支持console和file两种输出形式(可以同时使用)
提供Session管理功能
支持Gzip全局配置
提供XSRF跨站请求伪造安全过滤
大多数功能尽量使用简洁的ini进行配置来避免不必要的重新编译,并且这些配置文件支持自动补填默认值
提供
gorm、xorm、sqlx、directSQL、Websocket、ini、http client等很多常用扩展包
简单示例
package main
import (
// "mime/multipart"
"time"
"github.com/henrylee2cn/faygo"
)
type Index struct {
Id int `param:""`
Title string `param:""`
Paragraph []string `param:""`
Cookie string `param:""`
// Picture *multipart.FileHeader `param:""`
}
func (i *Index) Serve(ctx *faygo.Context) error {
if ctx.CookieParam("faygoID") == "" {
ctx.SetCookie("faygoID", time.Now().String())
}
return ctx.JSON(200, i)
}
func main() {
app := faygo.New("myapp", "0.1")
// Register the route in a chain style
app.GET("/index/:id", new(Index))
// Register the route in a tree style
// app.Route(
// app.NewGET("/index/:id", new(Index)),
// )
// Start the service
faygo.Run()
}
/*
http GET:
http://localhost:8080/index/1?title=test&p=abc&p=xyz
response:
{
"Id": 1,
"Title": "test",
"Paragraph": [
"abc",
"xyz"
],
"Cookie": "2016-11-13 01:14:40.9038005 +0800 CST"
}
*/
Design Accessible Web Sites
Jeremy Sydik / Pragmatic Bookshelf / 2007-11-05 / USD 34.95
It's not a one-browser web anymore. You need to reach audiences that use cell phones, PDAs, game consoles, or other "alternative" browsers, as well as users with disabilities. Legal requirements for a......一起来看看 《Design Accessible Web Sites》 这本书的介绍吧!
