Faygo-GoWebAPI利器

  • 授权协议:Apache
  • 开发厂商:未知
  • 开发语言:go
  • 收录时间:2020-03-20
  • 操作系统:Windows,Linux,OS X
  • 软件作者:henrylee
  • 开源标签: Faygo Web框架

软件介绍

Faygo 概述 Faygo 使用全新架构,是最合适开发API接口的Go Web框架。用户只需定义一个struct Handler,就能自动绑定、验证请求参数并生成在线API文档。 最新版本 版本号 v1.0 安装要求 Go Version ≥1.8 快速使用 方式一 源码下载 go get ..."

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接口(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 mainimport (    // "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=xyzresponse:    {        "Id": 1,        "Title": "test",        "Paragraph": [            "abc",            "xyz"        ],        "Cookie": "2016-11-13 01:14:40.9038005 +0800 CST"    }*/

上一篇:Yurunphp-专为懒人开发者设计的开源PHP框架

下一篇:ActFramework-JavaMVC全栈框架

您可能感兴趣的文章

相关阅读

查看更多 >