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>

        ApiwareHTTP接口定義與請求參數(shù)綁定中間件

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

        Apiware 將 Go 語言 net/http 及 fasthttp 請求的指定參數(shù)綁定到結(jié)構(gòu)體,并驗證參數(shù)值的合法性。 建議您可以使用結(jié)構(gòu)體作為 web 框架的 Handler,并用該中間件快速綁定請求參數(shù),節(jié)省了大量參數(shù)類型轉(zhuǎn)換與有效性驗證的工作。同時還可以通過該結(jié)構(gòu)體標簽,創(chuàng)建 swagger 的 json 配置文件,輕松創(chuàng)建 api 文檔服務。

        Demo 示例

        package main
        
        import (
            "encoding/json"
            "github.com/henrylee2cn/apiware"
            // "mime/multipart"
            "net/http"
            "strings"
        )
        
        type TestApiware struct {
            Id           int         `param:"in(path),required,desc(ID),range(1:2)"`
            Num          float32     `param:"in(query),name(n),range(0.1:10.19)"`
            Title        string      `param:"in(query),nonzero"`
            Paragraph    []string    `param:"in(query),name(p),len(1:10)" regexp:"(^[\\w]*$)"`
            Cookie       http.Cookie `param:"in(cookie),name(apiwareid)"`
            CookieString string      `param:"in(cookie),name(apiwareid)"`
            // Picture   multipart.FileHeader `param:"in(formData),name(pic),maxmb(30)"`
        }
        
        var myApiware = apiware.New(pathDecodeFunc, nil, nil)
        
        var pattern = "/test/:id"
        
        func pathDecodeFunc(urlPath, pattern string) apiware.KV {
            idx := map[int]string{}
            for k, v := range strings.Split(pattern, "/") {
                if !strings.HasPrefix(v, ":") {
                    continue
                }
                idx[k] = v[1:]
            }
            pathParams := make(map[string]string, len(idx))
            for k, v := range strings.Split(urlPath, "/") {
                name, ok := idx[k]
                if !ok {
                    continue
                }
                pathParams[name] = v
            }
            return apiware.Map(pathParams)
        }
        
        func testHandler(resp http.ResponseWriter, req *http.Request) {
            // set cookies
            http.SetCookie(resp, &http.Cookie{
                Name:  "apiwareid",
                Value: "http_henrylee2cn",
            })
        
            // bind params
            params := new(TestApiware)
            err := myApiware.Bind(params, req, pattern)
            b, _ := json.MarshalIndent(params, "", " ")
            if err != nil {
                resp.WriteHeader(http.StatusBadRequest)
                resp.Write(append([]byte(err.Error()+"\n"), b...))
            } else {
                resp.WriteHeader(http.StatusOK)
                resp.Write(b)
            }
        }
        
        func main() {
            // Check whether `testHandler` meet the requirements of apiware, and register it
            err := myApiware.Register(new(TestApiware))
            if err != nil {
                panic(err)
            }
        
            // server
            http.HandleFunc("/test/0", testHandler)
            http.HandleFunc("/test/1", testHandler)
            http.HandleFunc("/test/1.1", testHandler)
            http.HandleFunc("/test/2", testHandler)
            http.HandleFunc("/test/3", testHandler)
            http.ListenAndServe(":8080", nil)
        }

         

         

         

         

        瀏覽 35
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

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

        手機掃一掃分享

        編輯 分享
        舉報
        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>
            嗯~啊~快点死我在线观看 | 国产人妻国产毛片 | 亚洲AAA视频 | 亚洲午夜成人300 | 小早川ThePorn在线播放 | 欧美肥妇bbw | 五十路熟妇无码AV在线 | 91色小说 | 99国产成人综合久久精品欧美 | 摸进她的内裤里疯狂揉她韩国电影 |