Servir du contenu partiel dans les réponses HTTP avec Go
Servir du contenu partiel dans les réponses HTTP permet aux clients de demander des plages spécifiques d'un fichier. Ceci est utile pour gérer la lecture multimédia, où les clients peuvent n'avoir besoin de télécharger que des parties du fichier à des fins de recherche ou de boucle.
Comment diffuser du contenu partiel
Pour servir contenu partiel à l'aide du package http dans Go, vous pouvez utiliser les fonctions ServeContent ou ServeFile.
Utilisation ServeFile : Si vous servez des fichiers directement à partir du système de fichiers, vous pouvez utiliser http.ServeFile :
http.HandleFunc("/file", func(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, "my-file.mp3") })
Utilisation de ServeContent : Si vous En réservant du contenu à partir d'un tampon ou d'un flux, vous pouvez utiliser 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 et ServeContent gèrent les demandes de plage et définissent les en-têtes de contenu appropriés pour le contenu partiel.
Implémenter vous-même le contenu partiel
Bien que le package http fournisse des fonctions faciles à utiliser pour diffuser du contenu partiel, vous aurez peut-être besoin pour le mettre en œuvre vous-même dans certains scénarios. Voici un bref aperçu :
La mise en œuvre d'un contenu partiel pour vous-même nécessite une gestion minutieuse du statut. codes, en-têtes de requête et recherche dans la source de contenu.
Byte Serving et io.ReadSeeker
Byte Serving est le mécanisme sous-jacent pour servir du contenu partiel. Il permet aux clients de demander des plages spécifiques d'un fichier. Pour implémenter le service d'octets, votre contenu doit être représenté sous la forme d'un io.ReadSeeker, une interface qui fournit des méthodes de lecture et de recherche dans un flux.
Vous pouvez utiliser le type bytes.Reader pour représenter votre contenu sous la forme d'un io. .ReadSeeker. Le bytes.Reader peut être initialisé à partir d'une tranche d'octets ou de n'importe quelle implémentation de io.Reader.
En créant une vue io.ReadSeeker de votre contenu, vous pouvez contrôler comment et quand les données sont lues à partir de la source de contenu, vous permettant de gérer les demandes de plage et de diffuser efficacement du contenu partiel.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!