<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Go - 一個對新手很友好的項目(帶界面)

          共 3076字,需瀏覽 7分鐘

           ·

          2021-05-05 10:53

          這個開源項目就是:go-gin-api ,目前 800+ Star。

          go-gin-api 是基于 Gin 進(jìn)行模塊化設(shè)計的 API 框架,封裝了常用的功能,使用簡單,致力于進(jìn)行快速的業(yè)務(wù)研發(fā),同時增加了更多限制,約束項目組開發(fā)成員,規(guī)避混亂無序及自由隨意的編碼。

          下載后可直接運行

          $ git clone https://github.com/xinliangnote/go-gin-api
          cd go-gin-api
          $ go run main.go -env fat  // -env fat 設(shè)置為測試環(huán)境

          首先進(jìn)入到服務(wù)初始化界面。

          接下來填寫 MySQL、Redis 配置信息,填寫完成后,點擊初始化按鈕。

          如上圖所示,表示服務(wù)初始化成功,需要再重新啟動服務(wù),服務(wù)啟動后就會看到登錄界面。

          使用默認(rèn)用戶信息:admin,admin 登錄即可,登錄成功后就會看到儀表盤界面。

          已集成哪些功能?

          Panic 時郵件告警通知

          在后臺可配置郵件發(fā)件人信息,如下圖所示:

          郵件模板如下:

          接口鑒權(quán)

          在后臺可設(shè)置調(diào)用方 KEY、調(diào)用方 SECRET、調(diào)用方對接人、備注等信息。

          將創(chuàng)建的調(diào)用方的 KEY、SECRET 發(fā)給調(diào)用方即可,可以對調(diào)用方進(jìn)行 啟用/禁用/刪除 等操作,還可以對其授權(quán)可訪問的接口。

          接口鑒權(quán)是基于 HTTP Header 中的兩個參數(shù) Authorization、Authorization-Date 存儲簽名信息,代碼中提供了 3 種語言的加密算法:Go、PHPJS。

          代碼生成工具

          gormgen,基于數(shù)據(jù)表生成三個文件,以 admin 表為例會生成:gen_table.md 表注釋的 MD 文檔、gen_model.go 表字段的結(jié)構(gòu)體、gen_admin.go 表 CURD 操作代碼。

          意義:在進(jìn)行業(yè)務(wù)需求開發(fā)時,創(chuàng)建完數(shù)據(jù)表后,執(zhí)行代碼生成工具,常用的 CURD 操作全部生成完畢,使用的時候只需要 . 后面的方法即可,這樣大大提高了業(yè)務(wù)開發(fā)效率。

          handlergen,基于定義的 Handler 文件中 type interface{} 中接口方法,進(jìn)行生成文件。

          例如,定義的方法為:

          // Login 管理員登錄
          // @Tags API.admin
          // @Router /api/admin/login [post]
          Login() core.HandlerFunc

          生成后的方法為:

          type loginRequest struct {
           
          }

          type loginResponse struct {
           
          }

          // Login 管理員登錄
          // @Summary 管理員登錄
          // @Description 管理員登錄
          // @Tags API.admin
          // @Accept multipart/form-data
          // @Produce json
          // @Success 200 {object} loginResponse
          // @Failure 400 {object} code.Failure
          // @Router /api/admin/login [post]
          func (h *handler) Login() core.HandlerFunc {
           return func(c core.Context) {
               
           }
          }

          意義:本次需求的研發(fā)負(fù)責(zé)人通過定義 type interface{} 的方式,定義出需要開發(fā)的方法,執(zhí)行代碼生成工具,每個方法的空實現(xiàn)都會生成在一個單獨的文件中,開發(fā)人員只需去實現(xiàn)各自方法即可,便于進(jìn)行分工和代碼管理。

          接口日志

          通過 鏈路 ID 可以將 請求信息、響應(yīng)信息、調(diào)用第三方 HTTP 接口的信息、調(diào)用第三方 gRPC 接口的信息調(diào)試信息、執(zhí)行的 SQL 信息執(zhí)行的 Redis 信息 串起來,記錄到日志中。

          點擊某一行可查看日志詳情。

          接口文檔

          通過 handlergen 生成的代碼,自帶接口文檔。

          接口指標(biāo)

          項目中使用 prometheus 進(jìn)行指標(biāo)收集,項目中默認(rèn)開啟 metrics 記錄,可以通過 http://127.0.0.1:9999/metrics 即可查看。

          GraphQL

          項目中使用 gqlgen 實現(xiàn)了 GraphQL 查詢,會發(fā)現(xiàn)與 gqlgen init 初始化的 demo 不同,是因為代碼已經(jīng)集成到 go-gin-api 中,比如集成了項目 core 包中的 鏈路、日志 等。

          目前僅實現(xiàn)了 Demo, resolver 使用的是模擬數(shù)據(jù),不過使用可復(fù)用的 service  也已經(jīng)實現(xiàn)了,在代碼已注釋,感興趣的可以深入研究。

          Prometheus

          啟動 Prometheus 的配置文件,可參考:

          • ./deploy/prometheus/prometheus.yml

          類似效果:

          Loki

          Loki 是一個水平可擴(kuò)展,高可用性,多租戶的日志聚合系統(tǒng),有興趣可以研究一下。

          啟用 Loki 的配置文件,可參考:

          • ./deploy/loki/loki.yaml
          • ./deploy/loki/promtail.yaml

          已使用哪些組件?

          • 支持 rate 接口限流
          • 支持 panic 異常時郵件通知
          • 支持 cors 接口跨域
          • 支持 Prometheus 指標(biāo)記錄
          • 支持 Swagger 接口文檔生成
          • 支持 GraphQL 查詢語言
          • 支持 trace 項目內(nèi)部鏈路追蹤
          • 支持 pprof 性能剖析
          • 支持 jwt 接口鑒權(quán)
          • 支持 errno 統(tǒng)一定義錯誤碼
          • 支持 zap 日志收集
          • 支持 viper 配置文件解析
          • 支持 gorm 數(shù)據(jù)庫組件
          • 支持 go-redis 組件
          • 支持 RESTful API 返回值規(guī)范
          • 支持 gormgen、handlergen 代碼生成工具
          • 支持 web 界面,使用的 Light Year Admin 模板

          項目地址

          源碼地址

          https://github.com/xinliangnote/go-gin-api

          在線文檔

          https://www.yuque.com/xinliangnote/go-gin-api/ngc3x5



          推薦閱讀


          福利

          我為大家整理了一份從入門到進(jìn)階的Go學(xué)習(xí)資料禮包,包含學(xué)習(xí)建議:入門看什么,進(jìn)階看什么。關(guān)注公眾號 「polarisxu」,回復(fù) ebook 獲??;還可以回復(fù)「進(jìn)群」,和數(shù)萬 Gopher 交流學(xué)習(xí)。

          瀏覽 59
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  激情网五月天 | 一級免費网站 | 日韩无码性爱视频 | 久草在在线 | 日日干日日干 |