Faygo 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
Faygo 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
Faygo 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
Faygo 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
Faygo 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !

软件简介

Faygo

概述

Faygo 使用全新架构,是最合适开发API接口的Go Web框架。用户只需定义一个struct Handler,就能自动绑定、验证请求参数并生成在线API文档。

最新版本

版本号

v1.0

安装要求

Go Version ≥1.8

快速使用

  • 方式一 源码下载

go get -u -v github.com/henrylee2cn/faygo
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接口(funcstruct类型),共同构成路由操作链,只是概念层面的说法不同

  • 支持多种网络类型:

网络类型配置net_types
HTTPhttp
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进行配置来避免不必要的重新编译,并且这些配置文件支持自动补填默认值

  • 提供 gormxormsqlxdirectSQLWebsocketini 、http client 等很多常用扩展包

faygo struct handler 多重用途合一

简单示例

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"
    }
*/
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (12)

加载中
您好,文档可以再详细一些么
2020/12/24 01:57
回复
举报
请问这个是MVC框架吗?
2017/06/08 02:04
回复
举报
打分: 推荐
swagger 有中文UI资源没?
2017/05/20 16:32
回复
举报
能支持jwt的用户认证方式吗?现在后台分布式微服务架构都不太赞成用session。
2017/04/02 08:00
回复
举报
这个和 #Lessgo# 有什么区别么
2017/03/03 15:26
回复
举报
打分: 力荐
使用挺简单的,而且总结很多web框架精华,不错 推荐
2017/02/27 14:26
回复
举报
打分: 力荐
这几天正调研beego,又多个选择,好纠结。不过还是支持先
2017/02/27 13:31
回复
举报
打分: 力荐
一开始不太习惯,用了几天就感觉这个很好用啊,又简洁又自由,不错不错!!
2017/02/27 10:45
回复
举报
打分: 还行
使用了一下,还是继续留在beego吧
2017/02/25 18:50
回复
举报
打分: 力荐
关注一下
2017/02/25 16:35
回复
举报
更多评论
发表了资讯
2017/07/17 14:34

Faygo v1.1 发布,用心做更稳定、易用的 Web 框架

faygo v1.1 Web框架发布,该版本以细节功能优化、Bug修复为主,用心提升框架可用性与稳定性。因此,推荐所有用户放心升级。 更新列表: 新增慢响应告警日志,可在配置文件设置慢响应时长的阀值; 新增“log/app.pid”文件,记录进程PID,便于做运维管理; 应用实例(*Framework)新增Run()、Config()和ConfigFilename()三个方法; 优化SetShutdown()函数,支持优雅关闭前、优雅关闭后两个回调函数,优化graceful功能相关的日志;...

2
10
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
01/17 12:49

Go语言开发的Web框架都有哪些?

  框架是开发中的利器,可以帮助开发者快速上手,并提高工作效率;而GO作为一门快速增长的编程语言,具备简单、快速、可靠等优势,受到开发者的喜欢。那么你知道Go语言开发的Web框架都有哪些?跟随小编来看看吧。   1、项目名称:Gin   项目简介:Gin 是一个用 Go 语言开发的 Web 框架,提供类 Martini 的 API,但是性能更好。因为有了 httprouter 性能提升了 40 倍之多。   项目地址:   https://github.com/gin-goni...

0
0
发表了博客
01/17 12:51

Go语言开发的Web框架都有哪些?

  框架是开发中的利器,可以帮助开发者快速上手,并提高工作效率;而GO作为一门快速增长的编程语言,具备简单、快速、可靠等优势,受到开发者的喜欢。那么你知道Go语言开发的Web框架都有哪些?跟随小编来看看吧。   1、项目名称:Gin   项目简介:Gin 是一个用 Go 语言开发的 Web 框架,提供类 Martini 的 API,但是性能更好。因为有了 httprouter 性能提升了 40 倍之多。   项目地址:   https://github.com/gin-goni...

0
0
01/15 14:34

Go语言开发的Web框架都有哪些?

  框架是开发中的利器,可以帮助开发者快速上手,并提高工作效率;而GO作为一门快速增长的编程语言,具备简单、快速、可靠等优势,受到开发者的喜欢。那么你知道Go语言开发的Web框架都有哪些?跟随小编来看看吧。   1、项目名称:Gin   项目简介:Gin 是一个用 Go 语言开发的 Web 框架,提供类 Martini 的 API,但是性能更好。因为有了 httprouter 性能提升了 40 倍之多。   项目地址:   https://github.com/gin-goni...

0
0
发表了博客
2018/06/28 11:37

可能是国内最火的开源项目 —— Go 篇

截止目前开源中国收录了 44517 款开源项目,囊括了最热门的各类开源项目,而软件的评分在一定程度上代表了软件的质量和热度,近年 Go 语言排名一路飙升,因此本文整理了 Go 语言中评分最高并且收藏量超过 100 的几款项目,以供开发者选择和交流,排名如下: JetBrains 的 Go 开发工具 Gogland 评分:8.8;收藏量:106 Gogland 是 JetBrains 公司推出的 Go 语言集成开发环境。Gogland 同样基于 IntelliJ 平台开发,支持 JetBrain...

0
1
发表了博客
2019/03/10 23:49

go项目收藏

转:http://www.cnblogs.com/52php/p/6060104.html 1、谷歌官方维护了一个基于go语言的开源项目列表:https://github.com/golang/go/wiki/Projects 2、[知乎网] 有哪些值得学习的 Go 语言开源项目? 3、[知乎用户:hack stoic] 看过 awesome-go 项目, 汇总了很多 go 开源项目。 但是 awesome-go 收集了太全了, 而且每个项目没有描述。 因此我自己根据 go 语言中文社区提供的资料,还有互联网企业架构设计中的常见组件分类, ...

0
1
发表了博客
2018/01/15 08:13

【分享】2017 开源中国新增开源项目排行榜 TOP 100

2017 年开源中国社区新增开源项目排行榜 TOP 100 新鲜出炉! 这份榜单根据 2017 年开源中国社区新收录的开源项目的关注度和活跃度整理而来,这份最受关注的 100 款开源项目榜单在一定程度上预示着业界的最新流行趋势。 可以看到,前十名中有九个是国内开发者开发的开源项目,这个比例相比于去年已大大提高。 此外,榜单中的项目已经过筛选,均符合国际 OSI 批准的开源协议。 值得注意的是,今年关于人工智能的项目明显增加了不少...

0
0
发表了博客
2019/04/10 10:10

Go 语言优秀资源整理,为项目落地加速🏃

最后更新于2019.11.22 Go 语言优秀资源整理,为项目落地加速🏃 在 GitHub 上稳定更新,觉得不错请点个 Star ❤️ 如转载分享,请保留出处,谢谢 😆 原文地址: https://shockerli.net/post/go-awesome GitHub: https://github.com/shockerli/go-awesome 官网: https://golang.org 国内官网镜像(访问快~): https://golang.google.cn GitHub: https://github.com/golang/go 开发者平台: https://go.dev Wiki: https://github.c...

0
2
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
12 评论
204 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部