安裝
# 拉取 go spring 核心包
$ go get github.com/go-spring/go-core@v1.1.0-rc2
# 如果需要使用 go-spring 做 web 服務
$ go get github.com/go-spring/starter-gin@v1.1.0-rc2
建立檔案
package main
import (
"log"
"github.com/go-spring/spring-core/gs"
"github.com/go-spring/spring-core/web"
_ "github.com/go-spring/starter-gin"
)
func init() {
gs.Object(new(Controller)).Init(func(c *Controller) {
gs.GetMapping("/", c.Home)
})
}
type Controller struct{}
func (c *Controller) Home(ctx web.Context) {
ctx.String("Ok!")
}
func main() {
log.Fatal(gs.Run())
}
- 其中 init 方法裡我們註冊了一個 Controller 的空例項,這個不一定要在 init 中,可以在 gs.Run() 呼叫前的任意地方註冊,使用 init 的原因是可以不依賴包內部方法,只需要匯入即可注入。
- 然後通過 Init 註冊路由,gs.GetMapping 是容易封裝的路由掛載器。
- Home(ctx web.Context) 裡邊的 web.Context 則封裝了請求和響應的操作。
- github.com/go-spring/starter-gin 匯入替換 github.com/go-spring/starter-echo 可以直接替換為 echo 框架。
啟動程式
$ go run main.go
$ [INFO] github.com/go-spring/spring-core@v1.1.0-beta/gs/gs.go:296 container refreshed successfully
$ [INFO] github.com/go-spring/spring-core@v1.1.0-beta/gs/app.go:214 application started successfully
$ [INFO] github.com/go-spring/spring-core@v1.1.0-beta/web/container.go:169 [GET] :8080 / -> demo/go/filesystem/main.go:19 (*Controller).Home
$ [INFO] github.com/go-spring/spring-gin@v1.1.0-beta/container.go:121 ⇨ http server started on :8080
控制檯輸入 curl 127.0.0.1:8080 或瀏覽器訪問,得到如下結果代表程式執行成功
$ curl http://127.0.0.1:8080
$ Ok!
本作品採用《CC 協議》,轉載必須註明作者和本文連結