首頁 > 後端開發 > Golang > 主體

在 Golang 中解析 HTTP 請求正文

WBOY
發布: 2024-06-02 16:39:01
原創
671 人瀏覽過

在 Go 中解析 HTTP 請求正文有三種主要方法:使用 io.ReadAll 讀取整個正文。使用 json.Decoder 解析 JSON 正文。使用 r.ParseMultipartForm 解析表單資料。

在 Golang 中解析 HTTP 请求正文

在Golang 中解析HTTP 請求正文

解析HTTP 請求正文對於從客戶端接收資料和處理請求至關重要。 Golang 提供了多種方法來解析請求正文,本文將探討最常用的方法。

解析方式

1. 用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
}
登入後複製

實戰案例

一個簡單的REST API 端點可以處理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)
}
登入後複製

透過使用這些方法,你可以輕鬆地解析Golang 中的HTTP 請求正文,並從客戶端接收所需的資料。

以上是在 Golang 中解析 HTTP 請求正文的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!