API 利器 —— Faygo Web 框架
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:"<in:path> <required> <desc:ID> <range: 0:10>"`
Title string `param:"<in:query> <nonzero>"`
Paragraph []string `param:"<in:query> <name:p> <len: 1:10> <regexp: ^[\\w]*$>"`
Cookie string `param:"<in:cookie> <name:faygoID>"`
// Picture *multipart.FileHeader `param:"<in:formData> <name:pic> <maxmb:30>"`
}
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% ... 3Dxyz
response:
{
"Id": 1,
"Title": "test",
"Paragraph": [
"abc",
"xyz"
],
"Cookie": "2016-11-13 01:14:40.9038005 +0800 CST"
}
*/
開源協議
Faygo 專案採用商業應用友好的 Apache2.0 協議釋出。
相關文章
- .Net Core Web Api 框架搭建詳細步驟WebAPI框架
- .Net Core Web Api 框架搭建簡單步驟WebAPI框架
- JavaScript 效能利器 —— Web WorkerJavaScriptWeb
- 在Scala中構建Web API的4大框架WebAPI框架
- YoyoGo微服務框架入門系列-快速編寫WEB APIGo微服務框架WebAPI
- Whistle,web 抓包與 debug 利器Web
- 單元測試利器Mockito框架Mockito框架
- 筆記:API 和 Web API筆記APIWeb
- Web Audio APIWebAPI
- 好用的API介面,開發效率的利器API
- web ui 框架WebUI框架
- 前端web框架前端Web框架
- Go Web 路由處理利器 gorilla/mux 庫GoWeb路由UX
- 造輪子系列 — 註解、外掛式node.js web / restful api 框架Node.jsWebRESTAPI框架
- [beego新手入門]基於web框架-beego的RESTful API的構建之旅GoWeb框架RESTAPI
- 高效開發利器:熱門好用的API分享API
- 免費好用的api介面,開發者利器API
- 開發者利器:免費好用的api介面API
- golang web框架,golang版本laravel 框架GolangWeb框架Laravel
- Web框架之TornadoWeb框架
- Rust Web框架列表RustWeb框架
- Java Web UI框架JavaWebUI框架
- Web API中的EventWebAPI
- [譯] 元件化開發利器:Web Components標準元件化Web
- api測試框架 GuardianAPI框架
- API資料加密框架monkey-api-encryptAPI加密框架
- API Star:一個 Python 3 的 API 框架APIPython框架
- 好用的API彙總:提升開發效率的利器API
- JavaScript Sanitizer API:原生WEB安全API出現啦JavaScriptAPIWeb
- web api 、webservice 跨域等WebAPI跨域
- Python之Web框架DjangoPythonWeb框架Django
- 純手寫web框架Web框架
- python web框架的整理PythonWeb框架
- Web測試框架SeleniumBaseWeb框架
- Dynamics 365 Web API Set Values of all Data Types using Web API in Dynamics CRM Through C#WebAPIC#
- wsgiref模組、web框架、django框架簡介Web框架Django
- 基於gin的golang web開發:認證利器jwtGolangWebJWT
- C# mvc +axios + web api + javascriptC#MVCiOSWebAPIJavaScript
- .Net Web API 引數驗籤WebAPI