Web アプリケーションでは、HTTP リクエストでファイルと JSON データの両方を受信するのが一般的です。これらの要素を正常に処理するには、要素を効果的に解析する方法を理解することが不可欠です。
Go バックエンドにリクエストを送信する AngularJS フロントエンドがあるシナリオを考えてみましょう。リクエストにはファイル (「file」) と JSON データ (「doc」) が含まれます。目標は、このリクエストの PDF ファイルと JSON データの両方を解析することです。
この問題を解決するには、ファイルと JSON データの両方を個別に処理する必要があります。 http.(*Request).MultipartReader() を利用し、NextPart() を使用してパーツを反復処理することで、各要素を抽出して解析できます。
<code class="go">mr, err := r.MultipartReader() if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return }</code>
マルチパート リクエストの各パーツについて:
<code class="go">part, err := mr.NextPart() if err == io.EOF { break } if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return }</code>
パーツがファイルの場合 ( 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>
パーツに 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>
ファイルと JSON データの両方を解析した後、データベースへの保存やファイルの送信など、必要な後処理を実行できます。クライアントへの応答。
以上がGolang で HTTP リクエストからファイルと JSON データを解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。