La meilleure façon d'obtenir une chaîne de caractères à partir d'un Écrivain en Aller
J'ai un morceau de code qui renvoie à une page web en utilisant le modèle intégré du système. Il accepte un ResponseWriter
pour que ce balisage est écrit. Maintenant, je veux aller au balisage comme une chaîne de caractères et le mettre dans une base de données dans certains cas. J'ai pris en compte une méthode qui accepte une normale Writer
au lieu d'un ResponseWriter
et je suis maintenant essayer d'obtenir le contenu écrit. Aha - un Pipe
peut-être ce dont j'ai besoin et puis je peux obtenir de la chaîne de ReadString
de la bufio
de la bibliothèque. Mais il s'avère que le PipeReader
de sortir de la pipe n'est pas compatible avec Reader
(que j'aurais besoin pour le ReadString
méthode). W00t. Grosse surprise. Si seulement je pouvais lire en byte[]s à l'aide de la PipeReader
mais il se sent un peu mal quand ReadString
est là.
Alors quelle serait la meilleure façon de le faire? Dois-je coller avec le Pipe
et de lire des octets ou est-il quelque chose de meilleur que je n'ai pas trouvé dans le manuel?
Vous devez vous connecter pour publier un commentaire.
Si votre fonction accepte un io.Écrivain, vous pouvez passer une
*bytes.Buffer
de capturer la sortie.Si elle nécessite une http.ResponseWriter, vous pouvez utiliser un
*httptest.ResponseRecorder
. Une réponse de l'enregistreur contient toutes les informations qui peuvent être envoyés à un ResponseWriter, mais le corps n'est qu'un*bytes.Buffer
.Le code ci-dessous est peut-être la façon la plus simple de convertir Écrivain (ou de n'importe quel type) de la chaîne de
De sortie: