iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 20
0
Modern Web

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

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

  • 分享至 

  • xImage
  •  

本文同步發表於: Sponge Records

本文將會繼續上一回的內容,實作提供圖表資料的 api 邏輯

讀取圖表的 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

我們先簡單檢驗是否有在時間欄位傳入任何數值 如果沒有傳入值就回傳空值,如果有傳入值就回傳 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 的關聯等待前端與分析端完成介接


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

尚未有邦友留言

立即登入留言