Maison >développement back-end >Golang >Comment analyser des fichiers et des données JSON à partir d'une requête HTTP dans Golang ?
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.
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.
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.
<code class="go">mr, err := r.MultipartReader() if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return }</code>
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>
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>
Si la partie contient des données JSON (part.FormName() == "doc" ):
<code class="go">jsonDecoder := json.NewDecoder(part) err = jsonDecoder.Decode(&doc) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return }</code>
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!