首页 >后端开发 >Golang >如何在 Go 中使用 Mime 类型构造多部分请求

如何在 Go 中使用 Mime 类型构造多部分请求

Barbara Streisand
Barbara Streisand原创
2024-10-24 03:21:02221浏览

How to Construct Multipart Requests with Mime Types in Go

Go 中的多部分请求

在 Go 中创建多部分请求可能具有挑战性,尤其是在遵循特定请求格式时。为了了解如何有效地使用多部分请求,让我们考虑一个目标请求采用以下形式的示例:

POST /blabla HTTP/1.1
Host: 2.2.2.2
Authorization: moreblabla Content-Type: multipart/mixed; boundary=--rs0q5Jq0M2Yt08jU534d1q Content-Length: 347
Node: 1.1.1.1.1
--rs0q5Jq0M2Yt08jU534d1q Content-Type: application/json
{"hello" : "world"}
--rs0q5Jq0M2Yt08jU534d1q

之前,曾尝试使用 multipart.NewWriter 和默认部分创建来生成此类请求,这导致了内容识别的问题。为了解决这个问题,可以使用以下方法:

body := &bytes.Buffer{}
writer := multipart.NewWriter(body)

// Create the part with the appropriate mime type
part, _ := writer.CreatePart(textproto.MIMEHeader{"Content-Type": {"application/json"}})
part.Write(jsonStr)

writer.Close()

req, _ := http.NewRequest("POST", "blabla", body)
req.Header.Set("Content-Type", "multipart/mixed; boundary="+writer.Boundary())

通过在创建部件时指定内容类型,请求可以遵循预期的格式并成功传输所需的数据。

以上是如何在 Go 中使用 Mime 类型构造多部分请求的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn