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

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

Susan Sarandon
發布: 2024-10-24 17:06:02
原創
899 人瀏覽過

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中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板