ホームページ  >  記事  >  バックエンド開発  >  Golang で HTTP リクエスト本文を解析する

Golang で HTTP リクエスト本文を解析する

WBOY
WBOYオリジナル
2024-06-02 16:39:01671ブラウズ

Go で HTTP リクエストの本文を解析するには、主に 3 つの方法があります: io.ReadAll を使用して本文全体を読み取ります。 json.Decoder を使用して JSON 本文を解析します。 r.ParseMultipartForm を使用してフォーム データを解析します。

在 Golang 中解析 HTTP 请求正文

Golang での HTTP リクエスト本文の解析

HTTP リクエスト本文の解析は、クライアントからデータを受信して​​リクエストを処理するために重要です。 Golang にはリクエスト本文を解析するための複数のメソッドが用意されており、この記事では最も一般的に使用されるメソッドについて説明します。

解析方法

1. io.ReadAll を使用してテキスト全体を読み取りますio.ReadAll 读取整个正文

func readAll(w http.ResponseWriter, r *http.Request) {
    body, err := io.ReadAll(r.Body)
    if err != nil {
        http.Error(w, "Could not read body", http.StatusBadRequest)
        return
    }
    // 使用 body ...
}

2. 使用 json.Decoder 解析 JSON 正文

type RequestBody struct {
    Name string `json:"name"`
}

func decodeJSON(w http.ResponseWriter, r *http.Request) {
    body := RequestBody{}
    decoder := json.NewDecoder(r.Body)
    err := decoder.Decode(&body)
    if err != nil {
        http.Error(w, "Could not decode JSON body", http.StatusBadRequest)
        return
    }
    // 使用 body.Name ...
}

3. 使用 multipart/form-data

func parseFormData(w http.ResponseWriter, r *http.Request) {
    if err := r.ParseMultipartForm(32 << 20); err != nil {
        http.Error(w, "Could not parse form data", http.StatusBadRequest)
        return
    }
    // 访问表单字段 r.Form
}

2. json.Decoder を使用して JSON テキストを解析します

package main

import (
    "encoding/json"
    "fmt"
    "net/http"
)

type RequestBody struct {
    Name string `json:"name"`
}

func main() {
    http.HandleFunc("/", handleRequest)
    http.ListenAndServe(":8080", nil)
}

func handleRequest(w http.ResponseWriter, r *http.Request) {
    // 解析 JSON 请求正文
    body := RequestBody{}
    decoder := json.NewDecoder(r.Body)
    err := decoder.Decode(&body)
    if err != nil {
        http.Error(w, "Could not decode JSON body", http.StatusBadRequest)
        return
    }
    
    // 处理请求...
    
    // 返回响应
    fmt.Fprintf(w, "Hello, %s!", body.Name)
}

3. multipart/form-data を使用してフォーム データを解析します

rrreee

🎜実際のケース🎜🎜🎜 単純な REST API エンドポイントで JSON リクエストを処理し、応答を返すことができます: 🎜rrreee🎜これらのメソッドを使用すると、Golang で HTTP リクエストボディを簡単に解析し、クライアントから必要なデータを受け取ることができます。 🎜

以上がGolang で HTTP リクエスト本文を解析するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。