iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 13
0

當使用者呼叫完api,就會得到回應,而回應內容則必須寫入到http.ResponseWriter內,
這邊就來介紹能夠帶入response內的東西。

Text

最基本的回應,就是單純的文字檔了,要回傳文字檔,只要像這樣:

func handler(w http.ResponseWriter, r *http.Request) {
  w.Write([]byte("Pong"))
}

w.Write要求的是[]byte,因此你要回傳的文字必須要轉型成[]Byte,才能夠正常回傳。

Header

當碰上需要處理跨域請求(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的方式,則是要結合上面兩個,將回傳的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回傳回去了。


上一篇
Day12-json以及jsonparser
下一篇
Day14-錯誤回應
系列文
從0開始的golang web server30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言