根据组成部分构建HTTP请求

时间:2017-03-31 15:31:59

标签: http go

假设我有一个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对象?我想尽可能避免字符串格式化和构建。

1 个答案:

答案 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,但这会给你完全的灵活性。