Go語(yǔ)言中http.ResponseWriter接口
在 Go 語(yǔ)言中,客戶端請(qǐng)求信息都封裝到了 Request 對(duì)象,并通過(guò) ResponseWriter 將響應(yīng)發(fā)送回客戶端:
package main import ( "fmt" "net/http" ) func myHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "hello world") } func main() { http.HandleFunc("/go", myHandler) http.ListenAndServe("127.0.0.1:8000", nil) }
ResponseWriter 源碼結(jié)構(gòu)如下:
type ResponseWriter interface { // 用于設(shè)置/獲取所有響應(yīng)頭信息 Header() Header // 用于寫(xiě)入數(shù)據(jù)到響應(yīng)實(shí)體 Write([]byte) (int, error) // 用于設(shè)置響應(yīng)狀態(tài)碼 WriteHeader(statusCode int) }
包含三個(gè)方法:
- WriteHeader:主要作用是在 API 接口中返回錯(cuò)誤碼,支持傳入一個(gè)整型數(shù)據(jù)用來(lái)表示響應(yīng)狀態(tài)碼,如果不調(diào)用該方法的話,默認(rèn)響應(yīng)狀態(tài)碼是 200 OK。
- Header:用于設(shè)置響應(yīng)頭信息,可以通過(guò)
w.Header().Set
方法設(shè)置響應(yīng)頭;通過(guò)w.Header().Add
方法新增響應(yīng)頭 - Write:用于寫(xiě)入數(shù)據(jù)到 HTTP 響應(yīng)實(shí)體,如果調(diào)用 Write 方法時(shí)還不知道 Content-Type,會(huì)通過(guò)數(shù)據(jù)的前 512 個(gè)字節(jié)進(jìn)行判斷。
例如:w.Header().Set("Content-Type", "application/octet-stream")
content-type
指示響應(yīng)內(nèi)容的格式,如果這個(gè)類型瀏覽器能夠支持閱覽并且沒(méi)有設(shè)置content-disposition情況瀏覽器就會(huì)直接展示該資源,比如png、jpeg、video等格式,如果瀏覽器不支持就會(huì),默認(rèn)觸發(fā)下載。常見(jiàn)如下格式:
content-disposition
包含響應(yīng)數(shù)據(jù)的描述信息,以及下載或者在線查看的處理方式。
application/octet-stream
在某些下載文件的場(chǎng)景中,服務(wù)端可能會(huì)返回文件流,并在返回頭中帶上Content-Type: application/octet-stream,告知瀏覽器這是一個(gè)字節(jié)流,瀏覽器處理字節(jié)流的默認(rèn)方式就是下載。
例如:當(dāng)我們?cè)跒g覽器輸入http://localhost:9999/_geecache/scores/Tom時(shí),會(huì)觸發(fā)下載:
到此這篇關(guān)于Go語(yǔ)言中http.ResponseWriter接口的文章就介紹到這了,更多相關(guān)Go http.ResponseWriter接口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 解析Go 標(biāo)準(zhǔn)庫(kù) http.FileServer 實(shí)現(xiàn)靜態(tài)文件服務(wù)
- golang復(fù)用http.request.body的方法示例
- 解決golang http.FileServer 遇到的坑
- 在Golang中使用http.FileServer返回靜態(tài)文件的操作
- 在go文件服務(wù)器加入http.StripPrefix的用途介紹
- Golang中的http.Server源碼深入分析
- Go?http.Transport?主要參數(shù)說(shuō)明
- Go 語(yǔ)言中的 http.FileSystem詳細(xì)解析
- Golang語(yǔ)言如何讀取http.Request中body的內(nèi)容
- golang如何用http.NewRequest創(chuàng)建get和post請(qǐng)求
相關(guān)文章
Golang實(shí)現(xiàn)單元測(cè)試中的接口層
接口層主要負(fù)責(zé)的就是請(qǐng)求的處理,最常見(jiàn)的就是?HTTP?請(qǐng)求的處理。這篇文章主要為大家介紹了Golang如何實(shí)現(xiàn)單元測(cè)試中的接口層,需要的可以參考一下2023-03-03go語(yǔ)言題解LeetCode989數(shù)組形式的整數(shù)加法
這篇文章主要為大家介紹了go語(yǔ)言題解LeetCode989數(shù)組形式的整數(shù)加法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12golang interface指針實(shí)現(xiàn)示例
本文主要介紹了golang interface指針實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08Golang程序漏洞檢測(cè)器govulncheck的安裝和使用
govulncheck 是一個(gè)命令行工具,可以幫助 Golang 開(kāi)發(fā)者快速找到項(xiàng)目代碼和依賴的模塊中的安全漏洞,該工具可以分析源代碼和二進(jìn)制文件,識(shí)別代碼中對(duì)這些漏洞的任何直接或間接調(diào)用,本文就給大家介紹一下govulncheck安裝和使用,需要的朋友可以參考下2023-09-09Golang 實(shí)現(xiàn)獲取當(dāng)前函數(shù)名稱和文件行號(hào)等操作
這篇文章主要介紹了Golang 實(shí)現(xiàn)獲取當(dāng)前函數(shù)名稱和文件行號(hào)等操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-05-05Go?io/fs.FileMode文件系統(tǒng)基本操作和權(quán)限管理深入理解
這篇文章主要為大家介紹了Go?io/fs.FileMode文件系統(tǒng)基本操作和權(quán)限管理深入理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01使用client-go工具調(diào)用kubernetes API接口的教程詳解(v1.17版本)
這篇文章主要介紹了使用client-go工具調(diào)kubernetes API接口(v1.17版本),本文通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08