1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        FaygoGo Web API 利器

        聯(lián)合創(chuàng)作 · 2023-09-20 06:10

        Faygo

        概述

        Faygo 使用全新架構(gòu),是最合適開發(fā)API接口的Go Web框架。用戶只需定義一個struct Handler,就能自動綁定、驗證請求參數(shù)并生成在線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        創(chuàng)建、編譯和運行(監(jiān)控文件變化)一個新的faygo項目
                run        編譯和運行(監(jiān)控文件變化)任意一個已存在的golang項目
        
        fay new appname [apptpl]
                appname    指定新faygo項目的創(chuàng)建目錄
                apptpl     指定一個faygo項目模板(可選)
        
        fay run [appname]
                appname    指定待運行的golang項目路徑(可選)

        框架特性

        • 一個 struct Handler 搞定多件事:

          • 定義 Handler/Middleware

          • 綁定與驗證請求參數(shù)

          • 生成 Swagger2.0 API 在線文檔

          • 數(shù)據(jù)庫 ORM 映射

        • Handler與Middleware完全相同,都是實現(xiàn)Handler接口(funcstruct類型),共同構(gòu)成路由操作鏈,只是概念層面的說法不同

        • 支持多種網(wǎng)絡(luò)類型:

        網(wǎng)絡(luò)類型 配置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
        • 支持單服務(wù)單監(jiān)聽、單服務(wù)多監(jiān)聽、多服務(wù)多監(jiān)聽等,多個服務(wù)的配置信息相互獨立

        • 基于 httprouter 開發(fā)高性能路由,支持鏈?zhǔn)脚c樹形兩種注冊風(fēng)格,支持靈活的靜態(tài)文件路由(如DirFS、RenderFS、MarkdownFS等)

        • 支持平滑關(guān)閉、平滑升級,提供fay工具進行新建項目、熱編譯、元編程

        • 采用最強大的 pongo2 作為HTML渲染引擎

        • 提供近似LRU的文件緩存功能,主要用途是靜態(tài)文件緩存

        • 跨平臺的彩色日志系統(tǒng),且同時支持console和file兩種輸出形式(可以同時使用)

        • 提供Session管理功能

        • 支持Gzip全局配置

        • 提供XSRF跨站請求偽造安全過濾

        • 大多數(shù)功能盡量使用簡潔的ini進行配置來避免不必要的重新編譯,并且這些配置文件支持自動補填默認值

        • 提供 gorm、xorm、sqlxdirectSQL、Websocket、ini 、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"
            }
        */
        瀏覽 34
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        編輯 分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        編輯 分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            99精品视频在线免费观看 | 国产精品九九99久久精品 | 三个黑人大屌干欧美女孩 | 欧美成人区在线观看 | 黄片视频免费在线播放 | 九么免费版网站nba高危风险 | 久久免费一道本视频 | 成人在线视频免费观看 | 日韩美女乱伦 | 天天看高清无码视频 |