net/http使用简析
- 路由:路由注册在http.HandlerFunc(Path,handlerfunc)//接收一个资源定位的路径和一个响应函数
- 响应函数HandlerFunc(http.ResponseWriter,*http.Request)//其中http.Writer是一个接口实现了客户端消息的封装,Request获取客户端请求内容
- 在接收参数时需要手动request.ParseForm()解析参数
- http.ListenAndServe(Addr,handler)//启动服务,handler一般为空
结构解析
-
http.Request是客户端发出的或者服务端收到的相关信息,Request.Body和Request.Header对应请求头和消息内容,获取json数据时应当使用Body
-
http.Response{
Status string // e.g. “200 OK”
StatusCode int // e.g. 200
Proto string // e.g. “HTTP/1.0”
ProtoMajor int // e.g. 1
ProtoMinor int // e.g. 0
…
}Response对应http回复相关信息 -
Request.Form//请求头中的参数
-
Request.ParseForm()//解析URL中的查询字符串,并将解析结果更新到Form字段。
-
http.Client//http客户端
type Client struct {
Transport RoundTripper
CheckRedirect func(req *Request, via []*Request) error
Jar CookieJar
Timeout time.Duration
}
常用方法:对应http中客户端发起的请求
func (c *Client) Head(url string) (resp *Response, err error)
func (c *Client) Get(url string) (resp *Response, err error)
func (c *Client) Post(url string, bodyType string, body io.Reader) (resp *Response, err error)
func (c *Client) PostForm(url string, data url.Values) (resp *Response, err error)
- http.Server
type Server struct {
Addr string
Handler Handler
ReadTimeout time.Duration
WriteTimeout time.Duration
MaxHeaderBytes int
TLSConfig *tls.Config
TLSNextProto map[string]func(*Server, *tls.Conn, Handler)
ConnState func(net.Conn, ConnState)
ErrorLog *log.Logger
}Server中的字段是http服务端的配置信息
func (srv *Server) Serve