假设我有一个HTTP请求的表示,分解为如下部分:方法,URI,查询参数,标题,正文。
所以我可能有类似的东西:
Method: POST
Headers: [Content-Type: application/json, Host: localhost:8080, etc...]
Path: /home/sweet
Query: name=dan&id=1
Body: "some JSON here"
如何将其重建为有效的net / http Request对象?我想尽可能避免字符串格式化和构建。
答案 0 :(得分:4)
实际上只有一种方法可以创建http.Request
,而http.NewRequest
就是这样。它已经将你的三个组成部分作为参数:方法,路径和正文。
在调用NewRequest
之前,您需要将查询参数汇总到URL中。 url包,特别是url.Values可能对此有所帮助。
获得新请求后,您可以按照预期添加标题:
req, err := http.NewRequest("GET", "http://example.com/?foo=bar", body)
req.Header.Add("Content-Type", "application/json")
如果它需要说明,身体必须是io.Reader
,但这会给你完全的灵活性。