本文同步發表於: Sponge Records
本文將會繼續上一回的內容,實作提供圖表資料的 api 邏輯
我們將會實作 models\chat.go 中撈取圖表資料的部分
models\chat.go - var
//傳入 chatName 來找尋該圖表的 x、y 資料
func GetChatData(chatName string) (*ChatData) {
ChatData := &ChatData{}
//取得圖表名稱為 chatName 的資料
err := GetDB().Table("chatdata").Where("ChatName = ?", chatName).First(ChatData).Error
if err != nil {
return nil
}
//回傳
return ChatData
}
透過這支 api 我們就能初步的完成圖表傳遞給前端的任務,而此時由於前端還未接通,所以我們還尚未能確定是否能順利呈現,
我們先再做一支測試用的 api 方便前端測試
我們先簡單檢驗是否有在時間欄位傳入任何數值 如果沒有傳入值就回傳空值,如果有傳入值就回傳 API 時間
在 main.go 新增一個路由 test/test
router.HandleFunc("/api/test/test", controllers.Test).Methods("POST")
建立 testControllers.go
testControllers.go
package controllers
import (
"encoding/json"
"golang-api/models"
u "golang-api/utils"
"net/http"
)
var Test = func(w http.ResponseWriter, r *http.Request) {
test := &models.Test{}
err := json.NewDecoder(r.Body).Decode(test)
if err != nil {
u.Respond(w, u.Message(false, "Invalid request"))
return
}
resp := test.Test()
u.Respond(w, resp)
}
然後建立邏輯
models\test.go
package models
import (
u "golang-api/utils"
"os"
"time"
)
type Test struct {
Time string `json:"time"`
}
func (test *Test) Test() map[string]interface{} {
now := time.Now()
if test.Token == "" {
test.Time = ""
}
if test.Token != "" {
test.Time = now.String()
}
response := u.Message(true, "test")
response["test"] = test
return response
}
下一回將會回過頭介紹在構築 api 時用過的語法與介紹 orm 工具與 sql 的關聯等待前端與分析端完成介接