基本介绍
HTTPClient
支持强大的拦截器/中间件特性,该特性使得对于客户端的全局请求拦截及注入成为了可能,例如修改/注入 提交参数、修改/注入返回参数、基于客户端的参数校验等等。中间件的注入通过以下方法实现:
func (c *Client) Use(handlers ...HandlerFunc) *Client
在中间件中通过 Next
方法执行下一步流程, Next
方法定义如下:
func (c *Client) Next(req *http.Request) (*Response, error)
中间件类型
HTTPClient
中间件功能同 HTTPServer
的中间件功能类似,同样也是分为了前置中间件和后置中间件两种。
前置中间件
处理逻辑位于 Next
方法之前,格式形如:
c := g.Client()
c.Use(func(c *gclient.Client, r *http.Request) (resp *gclient.Response, err error) {
// 自定义处理逻辑
resp, err = c.Next(r)
return resp, err
})
后置中间件
处理逻辑位于 Next
方法之后,格式形如:
c := g.Client()
c.Use(func(c *gclient.Client, r *http.Request) (resp *gclient.ClientResponse, err error) {
resp, err = c.Next(r)
// 自定义处理逻辑
return resp, err
})