Teilinhalte in HTTP-Antworten mit Go bereitstellen
Durch die Bereitstellung von Teilinhalten in HTTP-Antworten können Clients bestimmte Bereiche einer Datei anfordern. Dies ist nützlich für die Handhabung der Medienwiedergabe, bei der Clients möglicherweise nur Teile der Datei zum Suchen oder Schleifen herunterladen müssen.
So stellen Sie Teilinhalte bereit
Zur Bereitstellung Um Teilinhalte mit dem http-Paket in Go zu erstellen, können Sie ServeContent oder ServeFile verwenden Funktionen.
Verwenden von ServeFile: Wenn Sie Dateien direkt aus dem Dateisystem bereitstellen, können Sie http.ServeFile:
http.HandleFunc("/file", func(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, "my-file.mp3") })
ServeContent verwenden: Wenn Sie Inhalte aus einem Puffer bereitstellen oder Als Stream können Sie http.ServeContent verwenden:
func handleContent(w http.ResponseWriter, r *http.Request) { content := getMyContent() http.ServeContent(w, r, "my-file.mp3", time.Now(), bytes.NewReader(content)) }
Sowohl ServeFile als auch ServeContent verarbeiten Bereichsanforderungen und legen die entsprechenden Inhaltsheader für Teilinhalte fest.
Teilinhalte selbst implementieren
Während das http-Paket benutzerfreundliche Funktionen bereitstellt Um Teilinhalte bereitzustellen, müssen Sie diese in bestimmten Szenarien möglicherweise selbst implementieren. Hier ist ein kurzer Überblick:
Die Implementierung teilweiser Inhalte, die Sie selbst bedienen, erfordert einen sorgfältigen Umgang mit dem Status Codes, Anforderungsheader und Suche in der Inhaltsquelle.
Byte Serving und io.ReadSeeker
Byte Serving ist der zugrunde liegende Mechanismus für die Bereitstellung von Teilinhalten. Es ermöglicht Clients, bestimmte Bereiche einer Datei anzufordern. Um die Byte-Bereitstellung zu implementieren, muss Ihr Inhalt als io.ReadSeeker dargestellt werden, eine Schnittstelle, die Methoden zum Lesen und Suchen innerhalb eines Streams bereitstellt.
Sie können den Typ bytes.Reader verwenden, um Ihren Inhalt als io darzustellen .ReadSeeker. Der bytes.Reader kann aus einem Byte-Slice oder einer beliebigen io.Reader-Implementierung initialisiert werden.
Indem Sie eine io.ReadSeeker-Ansicht Ihres Inhalts erstellen, können Sie steuern, wie und wann Daten aus der Inhaltsquelle gelesen werden. So können Sie Bereichsanfragen bearbeiten und Teilinhalte effektiv bereitstellen.
Das obige ist der detaillierte Inhalt vonWie implementiert man die teilweise Bereitstellung von Inhalten in Go-HTTP-Antworten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!