Maison  >  Article  >  développement back-end  >  Comment analyser des fichiers et des données JSON à partir d'une requête HTTP dans Golang ?

Comment analyser des fichiers et des données JSON à partir d'une requête HTTP dans Golang ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-24 17:06:02785parcourir

How to Parse Files and JSON Data from an HTTP Request in Golang?

Analyse de fichiers et de données JSON à partir d'une requête HTTP dans Go

Dans une application Web, il est courant de recevoir à la fois des fichiers et des données JSON dans une requête HTTP. Pour traiter avec succès ces éléments, il est essentiel de comprendre comment les analyser efficacement.

Le problème

Considérez un scénario dans lequel vous disposez d'un frontal AngularJS qui envoie une requête à un backend Go. La requête contient un fichier (« file ») et des données JSON (« doc »). Votre objectif est d'analyser à la fois le fichier PDF et les données JSON de cette requête.

La solution

Pour résoudre ce problème, vous devez traiter séparément le fichier et les données JSON. En utilisant http.(*Request).MultipartReader() et en itérant sur les parties à l'aide de NextPart(), vous pouvez extraire et analyser chaque élément.

Étape 1 : Créer un lecteur multipart

<code class="go">mr, err := r.MultipartReader()
if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}</code>

Étape 2 : Traiter chaque pièce

Pour chaque pièce de la demande multipart :

<code class="go">part, err := mr.NextPart()
if err == io.EOF {
    break
}
if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}</code>

Étape 3 : Extraire les données du fichier

Si la pièce est un fichier ( part.FormName() == "file") :

<code class="go">outfile, err := os.Create("./docs/" + part.FileName())
if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}
defer outfile.Close()

_, err = io.Copy(outfile, part)
if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}</code>

Étape 4 : Analyser les données JSON

Si la partie contient des données JSON (part.FormName() == "doc" ):

<code class="go">jsonDecoder := json.NewDecoder(part)
err = jsonDecoder.Decode(&amp;doc)
if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}</code>

Étape 5 : Post-traitement

Après avoir analysé le fichier et les données JSON, vous pouvez effectuer tout post-traitement nécessaire, comme l'enregistrer dans une base de données ou envoyer un réponse au client.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn