首頁 >後端開發 >Golang >如何在 Golang 中解析來自 HTTP 請求的檔案和 JSON 資料?

如何在 Golang 中解析來自 HTTP 請求的檔案和 JSON 資料?

Susan Sarandon
Susan Sarandon原創
2024-10-24 17:06:02906瀏覽

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

在Go 中解析HTTP 請求中的檔案和JSON 資料

在Web 應用程式中,在HTTP 請求中同時接收檔案和JSON 資料是很常見的。要成功處理這些元素,必須了解如何有效地解析它們。

問題

考慮一個場景,其中您有一個 AngularJS 前端向 Go 後端發送請求。該請求包含檔案(“file”)和 JSON 資料(“doc”)。您的目標是解析此請求中的 PDF 檔案和 JSON 資料。

解決方案

要解決此問題,您需要單獨處理文件和 JSON 資料。透過利用 http.(*Request).MultipartReader() 並使用 NextPart() 迭代各部分,您可以提取並解析每個元素。

第1 步:建立Multipart Reader

<code class="go">mr, err := r.MultipartReader()
if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}</code>

第2 步:處理每個部分

對於多部分請求中的每個部分:

<code class="go">part, err := mr.NextPart()
if err == io.EOF {
    break
}
if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}</code>

第3 步:提取檔案資料

如果該部分是一個檔案( 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>

第4 步:解析JSON 資料

如果部件包含JSON 資料(part.FormName() == "doc" ):

<code class="go">jsonDecoder := json.NewDecoder(part)
err = jsonDecoder.Decode(&amp;doc)
if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}</code>

第5 步:後處理

解析文件和JSON 資料後,您可以執行任何必要的後處理,例如將其儲存到資料庫或發送回覆客戶。

以上是如何在 Golang 中解析來自 HTTP 請求的檔案和 JSON 資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn