iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 18
0
Modern Web

Golang - 從打造一個 API 開始學起系列 第 18

[Day18] 儲存圖表資料並提供使用的 api (二)

  • 分享至 

  • xImage
  •  

本文同步發表於: Sponge Records

本文將會繼續上一回的內容,實作將圖表資料寫入資料庫的 api
此 api 設計為開放給分析端創建圖表使用,分成兩個 api

  1. 創建圖表資訊,圖表名稱、敘、與 x、y 軸代表資訊
  2. 寫入圖表內容,將圖表的 x、y 軸數值寫入資料庫

將新的 api 路由增加到 main.go

在 main.go 中增加以下路由

//圖表 api 
router.HandleFunc("/api/chat/createList", controllers.CreateChatInfo).Methods("POST")
router.HandleFunc("/api/chat/createData", controllers.CreateChatData).Methods("POST")

寫入圖表資訊的 api

將會透過 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

將會透過 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


上一篇
[Day17] 儲存圖表資料並提供使用的 api (一)
下一篇
[Day19] 儲存圖表資料並提供使用的 api (三)
系列文
Golang - 從打造一個 API 開始學起30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言