Go-Spring入門篇

李輕水發表於2021-11-27

安裝

# 拉取 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!

Go-Spring 官網
Github

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章