codecamp

GoFrame HTTPClient-链式操作

链式操作

GoFrame​框架的客户端支持便捷的链式操作,常用方法如下:

func (c *Client) Timeout(t time.Duration) *Client
func (c *Client) Cookie(m map[string]string) *Client
func (c *Client) Header(m map[string]string) *Client
func (c *Client) HeaderRaw(headers string) *Client
func (c *Client) ContentType(contentType string) *Client
func (c *Client) ContentJson() *Client
func (c *Client) ContentXml() *Client
func (c *Client) BasicAuth(user, pass string) *Client
func (c *Client) Retry(retryCount int, retryInterval time.Duration) *Client
func (c *Client) Prefix(prefix string) *Client
func (c *Client) Proxy(proxyURL string) *Client
func (c *Client) RedirectLimit(redirectLimit int) *Client
func (c *Client) Dump(dump ...bool) *Client
func (c *Client) Use(handlers ...HandlerFunc) *Client

简要说明:

  • Timeout​方法用于设置当前请求超时时间。
  • Cookie​方法用于设置当前请求的自定义​Cookie​信息。
  • Header*​方法用于设置当前请求的自定义​Header​信息。
  • Content*​方法用于设置当前请求的​Content-Type​信息,并且支持根据该信息自动检查提交参数并自动编码。
  • BasicAuth​方法用于设置​HTTP Basic Auth​校验信息。
  • Retry​方法用于设置请求失败时重连次数和重连间隔。
  • Proxy​方法用于设置​http​访问代理。
  • RedirectLimit​方法用于限制重定向跳转次数。

使用示例

示例1,请求超时控制

g.Client().Timeout(3*time.Second).GetContent(ctx, "http://user.svc/v1/user/info/1")
g.Client().Timeout(10*time.Second).PostContent(ctx, "http://order.svc/v1/order/create", g.Map{
    "uid"         : 1,
    "sku_id"      : 10000,
    "amount"      : 19.99,
    "create_time" : "2020-03-26 12:00:00",
})

示例2,自定义Cookie

g.Client().SetCookie("sessionid", "MNV5432PIY76").GetContent(ctx, "http://user.svc/v1/user/info/1")

示例3,自定义Header

g.Client().SetHeader("RequestId", "XVF654RT98UJNMN641V06Y").GetContent(ctx, "http://user.svc/v1/user/info/1")
g.Client().HeaderRaw(`
Referer: https://goframe.org/
User-Agent: MyTesyClient
`).GetContent(ctx, "http://user.svc/v1/user/info")

示例4,提交Json请求

g.Client().ContentJson().PostContent(ctx, "http://order.svc/v1/order/create", g.Map{
    "uid"         : 1,
    "sku_id"      : 10000,
    "amount"      : 19.99,
    "create_time" : "2020-03-26 12:00:00",
})

该请求将会将​Content-Type​设置为​application/json​,并且将提交参数自动编码为​Json​:

{"uid":1,"sku_id":10000,"amount":19.99,"create_time":"2020-03-26 12:00:00"}

示例5,提交Xml请求

g.Client().ContentXml().PostContent(ctx, "http://order.svc/v1/order/create", g.Map{
    "uid"         : 1,
    "sku_id"      : 10000,
    "amount"      : 19.99,
    "create_time" : "2020-03-26 12:00:00",
})

该请求将会将​Content-Type​设置为​application/xml​,并且将提交参数自动编码为​Xml​:

<doc><amount>19.99</amount><create_time>2020-03-26 12:00:00</create_time><sku_id>10000</sku_id><uid>1</uid></doc>


GoFrame HTTPClient-基本介绍
GoFrame HTTPClient-基本使用
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

GoFrame 核心组件

GoFrame 核心组件-数据库ORM

GoFrame 模块列表

GoFrame 模块列表-单元测试

GoFrame 模块列表-功能调试

GoFrame WEB服务开发

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }