Go語言中http.ResponseWriter接口
在 Go 語言中,客戶端請求信息都封裝到了 Request 對象,并通過 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 // 用于寫入數(shù)據(jù)到響應(yīng)實體 Write([]byte) (int, error) // 用于設(shè)置響應(yīng)狀態(tài)碼 WriteHeader(statusCode int) }
包含三個方法:
- WriteHeader:主要作用是在 API 接口中返回錯誤碼,支持傳入一個整型數(shù)據(jù)用來表示響應(yīng)狀態(tài)碼,如果不調(diào)用該方法的話,默認(rèn)響應(yīng)狀態(tài)碼是 200 OK。
- Header:用于設(shè)置響應(yīng)頭信息,可以通過
w.Header().Set
方法設(shè)置響應(yīng)頭;通過w.Header().Add
方法新增響應(yīng)頭 - Write:用于寫入數(shù)據(jù)到 HTTP 響應(yīng)實體,如果調(diào)用 Write 方法時還不知道 Content-Type,會通過數(shù)據(jù)的前 512 個字節(jié)進(jìn)行判斷。
例如:w.Header().Set("Content-Type", "application/octet-stream")
content-type
指示響應(yīng)內(nèi)容的格式,如果這個類型瀏覽器能夠支持閱覽并且沒有設(shè)置content-disposition情況瀏覽器就會直接展示該資源,比如png、jpeg、video等格式,如果瀏覽器不支持就會,默認(rèn)觸發(fā)下載。常見如下格式:
content-disposition
包含響應(yīng)數(shù)據(jù)的描述信息,以及下載或者在線查看的處理方式。
application/octet-stream
在某些下載文件的場景中,服務(wù)端可能會返回文件流,并在返回頭中帶上Content-Type: application/octet-stream,告知瀏覽器這是一個字節(jié)流,瀏覽器處理字節(jié)流的默認(rèn)方式就是下載。
例如:當(dāng)我們在瀏覽器輸入http://localhost:9999/_geecache/scores/Tom時,會觸發(fā)下載:
到此這篇關(guān)于Go語言中http.ResponseWriter接口的文章就介紹到這了,更多相關(guān)Go http.ResponseWriter接口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 解析Go 標(biāo)準(zhǔn)庫 http.FileServer 實現(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ù)說明
- Go 語言中的 http.FileSystem詳細(xì)解析
- Golang語言如何讀取http.Request中body的內(nèi)容
- golang如何用http.NewRequest創(chuàng)建get和post請求
相關(guān)文章
go語言題解LeetCode989數(shù)組形式的整數(shù)加法
這篇文章主要為大家介紹了go語言題解LeetCode989數(shù)組形式的整數(shù)加法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12Golang程序漏洞檢測器govulncheck的安裝和使用
govulncheck 是一個命令行工具,可以幫助 Golang 開發(fā)者快速找到項目代碼和依賴的模塊中的安全漏洞,該工具可以分析源代碼和二進(jìn)制文件,識別代碼中對這些漏洞的任何直接或間接調(diào)用,本文就給大家介紹一下govulncheck安裝和使用,需要的朋友可以參考下2023-09-09Golang 實現(xiàn)獲取當(dāng)前函數(shù)名稱和文件行號等操作
這篇文章主要介紹了Golang 實現(xiàn)獲取當(dāng)前函數(shù)名稱和文件行號等操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧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版本),本文通過圖文實例相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08