概述
net/http可以用来处理HTTP协议,包括HTTP服务器和HTTP客户端,http包主要由五个部分组成:
- Request,HTTP请求对象
- Response,HTTP响应对象
- Client,HTTP客户端
- Server,HTTP服务端
最简单的使用
http包提供了对应于每个HTTP动词的函数来发送HTTP请求,当你不需要对请求进行详细的定制时可以直接使用它们。
resp, err := http.Get("http://example.com/") // GET
resp, err := http.Post("http://example.com/") // POST
resp, err := http.PostForm("http://example.com/", url.Values{
"foo": "bar"}) // 提交表单
HTTP请求和响应
HTTP作为一个通信协议,通过报文传递信息;报文分为请求报文和响应报文,在http包中,分别用Reqeust和Response对象进行了抽象。
Request
可以通过NewRequest创建一个Request对象,方法声明如下,需要传入HTTP方法,URL以及报文体进行初始化:
func NewRequest(method, url string, body io.Reader) (*Request, error)
Request对象主要用于数据的存储,结构如下:
type Request struct {
Method string // HTTP方法
URL *url.URL // URL
Proto string // "HTTP/1.0"
ProtoMajor