Gone 一個基於 Golang 的輕量級依賴注入框架
Gone 一個基於 Golang 的輕量級依賴注入框架
Gone 首先是一個輕量的,基於 Golang 的,依賴注入框架,靈感來源於 Java 中的 Spring Framework;其次,Gone 框架中包含了一系列內置組件,通過這些組件提供一整套 Web 開發方案,提供服務配置、日誌追蹤、服務調用、數據庫訪問、消息中間件等微服務常用能力。
文檔
-
https://goner.fun/zh/
-
https://github.com/gone-io/gone
使用示例
下面使用 Gone 來編寫一個 Web 服務吧!
package main
import (
"fmt"
"github.com/gone-io/gone"
"github.com/gone-io/gone/goner"
)
// 實現一個Goner,什麼是Goner? => https://goner.fun/zh/guide/core-concept.html#goner-%E9%80%9D%E8%80%85
type controller struct {
gone.Flag //goner 標記,匿名嵌入後,一個結構體就實現了Goner
gone.RouteGroup `gone:"gone-gin-router"` //注入根路由
}
// 實現 Mount 方法,掛載路由;框架會自動執行該方法
func (ctr *controller) Mount() gone.GinMountError {
// 定義請求結構體
type Req struct {
Msg string `json:"msg"`
}
//註冊 `POST /hello` 的 處理函數
ctr.POST("/hello", func(in struct {
to string `gone:"http,query"` //注入http請求Query參數To
req *Req `gone:"http,body"` //注入http請求Body
}) any {
return fmt.Sprintf("to %s msg is: %s", in.to, in.req.Msg)
})
return nil
}
func main() {
//啓動服務
gone.Serve(func(cemetery gone.Cemetery) error {
// 調用框架內置組件,加載gin框架
_ = goner.GinPriest(cemetery)
//將 一個controller類型的Goner埋葬到墓園
//埋葬是什麼意思? => https://goner.fun/zh/guide/core-concept.html#bury-%E5%9F%8B%E8%91%AC
//墓園是什麼意思? => https://goner.fun/zh/guide/core-concept.html#cemetery-%E5%A2%93%E5%9B%AD
cemetery.Bury(&controller{})
return nil
})
}
運行上面代碼:go run main.go,程序將監聽 8080 端口,使用 curl 測試:
curl -X POST 'http://localhost:8080/hello' \
-H 'Content-Type: application/json' \
--data-raw '{"msg": "你好呀?"}'
結果如下:
{"code":0,"data":"to msg is: 你好呀?"}
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/ddg1faTGkTwMtOhF2sxd8A