使用 Go 在 HTTP 回應中提供部分內容
在 HTTP 回應中提供部分內容允許客戶端請求文件的特定範圍。這對於處理媒體播放很有用,客戶端可能只需要下載檔案的一部分以用於搜尋或循環目的。
如何提供部分內容
服務Go中使用http包的部分內容,可以使用ServeContent或ServeFile
使用ServeFile: 如果您直接從文件系統提供文件,則可以使用http.ServeFile:
http.HandleFunc("/file", func(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, "my-file.mp3") })
使用ServeContent: 如果如果您正在從緩衝區或串流提供內容,則可以使用http.ServeContent:
func handleContent(w http.ResponseWriter, r *http.Request) { content := getMyContent() http.ServeContent(w, r, "my-file.mp3", time.Now(), bytes.NewReader(content)) }
ServeFile 與ServeContent都處理範圍請求並為部分內容設定適當的內容標頭.
實現部分內容你自己
雖然http 套件提供了易於使用的函數來提供部分內容,但在某些情況下你可能需要自己實現它。以下是簡要概述:
實作為自己服務的部分內容需要仔細處理狀態代碼、請求標頭以及內容來源中的尋找。
位元組服務和 io.ReadSeeker
位元組服務是提供部分服務的底層機制內容。它允許客戶端請求文件的特定範圍。要實現位元組服務,您的內容必須表示為 io.ReadSeeker,該介面提供在流中讀取和查找的方法。
您可以使用 bytes.Reader 類型將您的內容表示為 io .ReadSeeker。 bytes.Reader 可以從位元組切片或任何 io.Reader 實作進行初始化。
透過建立內容的 io.ReadSeeker 視圖,您可以控制從內容來源讀取資料的方式和時間,讓您能夠有效地處理範圍請求並提供部分內容。
以上是如何在 Go HTTP 回應中實現部分內容服務?的詳細內容。更多資訊請關注PHP中文網其他相關文章!