「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Golang で HTTP リクエストからファイルと JSON データを解析するにはどうすればよいですか?

Golang で HTTP リクエストからファイルと JSON データを解析するにはどうすればよいですか?

2024 年 11 月 13 日に公開
ブラウズ:529

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

Go での HTTP リクエストからのファイルと JSON データの解析

Web アプリケーションでは、HTTP リクエストでファイルと JSON データの両方を受信するのが一般的です。これらの要素を正常に処理するには、要素を効果的に解析する方法を理解することが不可欠です。

問題

Go バックエンドにリクエストを送信する AngularJS フロントエンドがあるシナリオを考えてみましょう。リクエストにはファイル (「file」) と JSON データ (「doc」) が含まれます。目標は、このリクエストの PDF ファイルと JSON データの両方を解析することです。

解決策

この問題を解決するには、ファイルと JSON データの両方を個別に処理する必要があります。 http.(*Request).MultipartReader() を利用し、NextPart() を使用してパーツを反復処理することで、各要素を抽出して解析できます。

ステップ 1: マルチパート リーダーを作成する

mr, err := r.MultipartReader()
if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}

ステップ 2: 各パートを処理する

マルチパート リクエストの各パートについて:

part, err := mr.NextPart()
if err == io.EOF {
    break
}
if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}

ステップ 3: ファイル データの抽出

パーツがファイルの場合 (part.FormName() == "file"):

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
}

ステップ 4: JSON データを解析する

パーツに JSON データが含まれている場合 (part.FormName() == "doc"):

jsonDecoder := json.NewDecoder(part)
err = jsonDecoder.Decode(&doc)
if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}

ステップ 5: 後処理

ファイルと JSON データの両方を解析した後、データベースへの保存やクライアントへの応答の送信など、必要な後処理を実行できます。 .

リリースステートメント この記事は次の場所に転載されています: 1729747542 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3