當使用者呼叫完api,就會得到回應,而回應內容則必須寫入到http.ResponseWriter內,
這邊就來介紹能夠帶入response內的東西。
最基本的回應,就是單純的文字檔了,要回傳文字檔,只要像這樣:
func handler(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Pong"))
}
w.Write要求的是[]byte,因此你要回傳的文字必須要轉型成[]Byte,才能夠正常回傳。
當碰上需要處理跨域請求(CORS)時,需要在header內帶上Access-Control-Allow-Origin,
來讓瀏覽器通過驗證,就像下面這樣
func handler(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Access-Control-Allow-Origin", "*")
}
通過這種方式,來依需求對回應的header進行set。
而回傳json的方式,則是要結合上面兩個,將回傳的json轉成[]byte,
並在回傳的header內set Content-Type=json,像下面的範例一樣
func handler(w http.ResponseWriter, r *http.Request) {
data := []byte(`{"id" : 123}`)
js, err := json.Marshal(data)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
w.Header().Set("Content-Type", "application/json")
w.Write(js)
}
透過這種方式,我們就能夠用json回傳回去了。