Response
在HTTP消息中有2种,1个是Response,另外1个是Request。
Response表示HTTP请求的响应。从服务端返回给客户端响应结果。
Response的类型是结构体,结构体中有5个字段。
(1)字段Status是状态码字符串,字符串类型,如”200OK”;
(2)StatusCode是状态码,int类型,如200;
(3)Proto,ProtoMajor,ProtoMinor三个字段表示传入服务器请求的协议版本。HTTP客户端代码始终使用HTTP/1.1或HTTP/2。
Request
Request是请求,发送给服务端的接收到的HTTP请求,这个请求是由客户端发送的。
Request的类型是结构体,简单介绍结构体中的几个重点字段。
(1)Method:字符串类型,表示HTTP方法(GET、POST、PUT等)。
(2)URL:url.URL的指针类型,表示客户端的请求地址,也是1个结构体,有以下几个字段。
以下示例返回UR
执行结果
(3)Proto:string类型,表示传入服务器请求的协议版本。对于客户端请求,这些字段将被忽略。HTTP客户端代码总是使用HTTP/1.1或HTTP/2。
执行结果
(4)Header:Header类型,表示收到的请求报头,报头包含由服务器接收或由客户端发送的请求报头字段。
执行结果
(5)Body:Request的io.ReadCloser类型,表示请求的内容
(6)ContentLength:int64类型,值>=0表示可以从Body中读取给定的字节数。
(7)FormValue:url.Values类型,表示请求的字段,表单包含已解析的表单数据,包括URL字段的查询参数和PATCH、POST或PUT表单数据。
(8)PostFormValue:url.Values类型,PostForm包含来自PATCH、POST或PUT主体参数的解析表单数据。
(9)MultipartForm:*multipart.Form类型,MultipartForm是经过解析的多部分表单,包括文件上传。
同样,Request还有一些重要的方法。
(1)UserAgent():返回值是string类型,UserAgent返回客户端的User-Agent。
(2)Cookies():返回值是*http.Cookie的切片,cookie解析并返回与请求一起发送的HTTP cookie。
(3)Cookie(name string):返回值是2个,1个是*http.Cookie指针,1个是error,传入的参数是已命名的Cookie的名字:Cookie返回请求中提供的已命名的Cookie,如果没有找到则返回ErrNoCookie。如果多个cookie匹配给定的名称,则只返回一个cookie。