第一個應用程式
透過 Spine CLI 建立新專案,並確認 GET /health 會回傳 {"status":"ok"}。閱讀產生的檔案,同時了解設定、驗證到執行應用程式的流程。
需要 Go 1.25.5 以上版本,CLI 建議使用 Go 1.27.3。首次下載相依套件所需的時間會因環境而異。
1. 安裝 CLI 並確認指令
go install github.com/NARUBROWN/spine-cli/cmd/spine@v0.1.4
spine versionspine version 會輸出 spine-cli 0.1.4。若找不到指令,請參閱安裝說明,確認 Go 執行檔的路徑設定。
2. 建立專案
在預計放置專案的上層目錄執行。若已有 hello-spine 目錄,請使用其他名稱。
spine new hello-spine --module example.com/hello-spine
cd hello-spine
go mod tidy專案檔案會產生在 hello-spine 目錄。CLI 會在 go.mod 中指定 Spine v0.5.1,而 go mod tidy 會下載所需的相依套件。
3. 確認產生的結構
hello-spine/
├── .gitignore
├── README.md
├── go.mod
├── main.go
├── spine.toml
└── internal/application/
├── application.go
└── application_test.go專案包含作為執行起點的 main.go,以及存放應用程式設定程式碼的 internal/application 目錄。spine.toml 會告知 CLI 模組路徑、執行進入點、應用程式設定程式碼的位置與連接埠。
module = "example.com/hello-spine"
entrypoint = "."
composition = "./internal/application"
port = 8080internal/application/application.go 中的 BuildApplication() 會回傳應用程式與執行選項。產生的程式碼會註冊 HealthController 建構函式與 GET /health,並明確指定 HTTP 執行選項 boot.HTTPOptions。
新增功能時,請將路由、建構函式與攔截器的註冊程式碼集中放在此函式,或此處呼叫的 Register(app) error 函式中。詳細方式請參閱專案結構。
main.go 已經產生,無需修改。請透過下列程式碼確認應用程式的設定、驗證與執行順序。
func main() {
app, options, err := application.BuildApplication()
if err != nil {
log.Fatal(err)
}
if err := app.Validate(options); err != nil {
log.Fatal(err)
}
if err := app.Run(options); err != nil {
log.Fatal(err)
}
}4. 驗證應用程式設定與程式碼
在建立的專案根目錄執行。
spine doctor
spine inspect
spine contract check
spine verifydoctor 會診斷工具與專案設定。inspect 會顯示程式碼中註冊的路由與相依性等應用程式設定。CLI 從註冊程式碼擷取的這些資訊稱為執行契約。
contract check 會檢查執行契約,verify 除了檢查契約,還會執行 gofmt、go vet 與 Go 測試。產生的 application_test.go 也會在不啟動伺服器的情況下,檢查 BuildApplication() 與 app.Validate(options)。若所有指令都執行完畢且未發生錯誤,就可以啟動伺服器。
5. 執行並確認回應
spine dev伺服器執行時,開啟另一個終端機發送請求。
curl http://localhost:8080/health{"status":"ok"}若回傳上述 JSON 回應,表示 GET /health 已正常運作。在執行伺服器的終端機按下 Ctrl+C,即可結束開發伺服器。
