Maison > développement back-end > Golang > le corps du texte

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

Susan Sarandon
Libérer: 2024-10-24 17:06:02
original
793 Les gens l'ont consulté

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>
Copier après la connexion

É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>
Copier après la connexion

É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>
Copier après la connexion

É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>
Copier après la connexion

É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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!