本文同步發表於: Sponge Records
本文將會建立回傳格式的共用格式與找不到路由時的錯誤訊息
我們將會實作 utils\utils.go ,定義回傳的格式,由於這是每一個功能都會用到的功能,因此我們把它獨立抽出來模組化,方便開發使用
utils.go
package utils
import (
"encoding/json"
"net/http"
)
func Message(status bool, message string) (map[string]interface{}) {
return map[string]interface{} {"status" : status, "message" : message}
}
//以 json 格式回應
func Respond(w http.ResponseWriter, data map[string] interface{}) {
w.Header().Add("Content-Type", "application/json")
json.NewEncoder(w).Encode(data)
}
之後透過 utils.go 即可將資訊轉成 JSON 呈現
如果出現路由內沒有的名稱,就會透過 utils\utils.go 標示狀態為失敗,並且顯示 not found
errors.go
package application
import (
"net/http"
u "golang-api/utils"
)
var NotFoundHandler = func(next http.Handler) http.Handler {
//當找不到路由名稱時
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusNotFound)
//透過 u.Message 加上狀態與訊息,與透過 u.Respond 回傳 JSON 格式的訊息
u.Respond(w, u.Message(false, "not found"))
next.ServeHTTP(w, r)
})
}
之後透過 errors.go 就能在錯誤時顯示訊息,幫助使用時除錯
下回將開始進入會員系統設計,實作帳號註冊功能