本文同步發表於: Sponge Records
本文將會繼續上一回的內容,實作將圖表資料寫入資料庫的 api
此 api 設計為開放給分析端創建圖表使用,分成兩個 api
在 main.go 中增加以下路由
//圖表 api
router.HandleFunc("/api/chat/createList", controllers.CreateChatInfo).Methods("POST")
router.HandleFunc("/api/chat/createData", controllers.CreateChatData).Methods("POST")
將會透過 api/chat/createList 來使用
我們先實作 controllers\chatsControllers.go 增加寫入圖表資訊的 api
controllers\chatsControllers.go - var CreateChatList
var CreateChatList = func(w http.ResponseWriter, r *http.Request) {
ChatList := &models.ChatList{}
err := json.NewDecoder(r.Body).Decode(ChatList)
//如果輸入的請求錯誤
if err != nil {
u.Respond(w, u.Message(false, "Invalid request"))
return
}
resp := ChatList.CreateChatList()
u.Respond(w, resp)
}
再來實作 models\chat.go 內的圖表邏輯
models\chat.go
//圖表清單
type ChatList struct {
gorm.Model
ChatName string `json:"ChatName"`
ChatDepiction string `json:"ChatDepiction"`
XName string `json:"XName"`
YName string `json:"YName"`
}
func (chatlist *ChatList) CreateChatList() (map[string] interface{}) {
GetDB().Create(chatlist)
resp := u.Message(true, "success")
resp["chatlist"] = chatlist
return resp
}
之後只要透過傳遞 json 資料到 api/chat/createList 就可以建立圖表資訊
{
"ChatName":"TestChat",
"ChatDepiction":"This is the TestChat",
"XName":"name",
"YName":"years"
}
將會透過 api/chat/createData 來使用
我們先實作 controllers\chatsControllers.go 增加寫入圖表內容的 api
controllers\chatsControllers.go - var CreateChatData
var CreateChatData = func(w http.ResponseWriter, r *http.Request) {
ChatData := &models.ChatData{}
err := json.NewDecoder(r.Body).Decode(ChatData)
//如果輸入的請求錯誤
if err != nil {
u.Respond(w, u.Message(false, "Invalid request"))
return
}
resp := ChatData.CreateChatData()
u.Respond(w, resp)
}
再來實作 models\chat.go 內的圖表內容寫入
models\chat.go
//圖表資料
type ChatData struct {
gorm.Model
ChatName string `json:"ChatName"`
XChat string `json:"XChat"`
YChat string `json:"YChat"`
}
func (chatdata *ChatData) CreateChatData() map[string]interface{} {
GetDB().Create(chatdata)
resp := u.Message(true, "success")
resp["chatdata"] = chatdata
return resp
}
之後只要透過傳遞 json 資料到 api/chat/createData 就可以增加圖表內容
{
"ChatName":"TestChat",
"XData":"1",
"YData":"1"
}
本文已經完成初步的圖表寫入功能,下一回將會針對驗證與資料格式做更多處理,並會開始設計讀取的 api