为了账号安全,请及时绑定邮箱和手机立即绑定

获取最后一页 http 请求 golang

获取最后一页 http 请求 golang

Go
Smart猫小萌 2022-01-04 14:05:37
我正在做一个http request这样的:resp, err := http.Get("http://example.com/")然后我得到header link:link := resp.Header.Get("link")这给了我这样的结果:<page=3>; rel="next",<page=1>; rel="prev";<page=5>; rel="last"问题如何将其解析为更清晰的方式?我特别想获得的last页面,但first和next页面应该有用。我尝试过,Splits也Regular expressions没有成功。
查看完整描述

2 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

你确定这是输出的格式吗?看起来其中之一;应该是,. 具有多个值的单个 Link http 标头应采用以下格式(注意“prev”后的逗号)

<page=3>; rel="next",<page=1>; rel="prev",<page=5>; rel="last"

应该,为每个链接拆分订单。拆分每个链接以;获取值或键值对,然后如果它们的值匹配<(.*=.*)>,则丢弃尖括号并使用剩余的键和值。


查看完整回答
反对 回复 2022-01-04
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

这是如何匹配页码的解决方案。


http://play.golang.org/p/kzurb38Fwx


text := `<page=3>; rel="next",<page=1>; rel="prev";<page=2>; rel="last"`

re := regexp.MustCompile(`<page=([0-9]+)>; rel="next",<page=([0-9]+)>; rel="prev";<page=([0-9]+)>; rel="last"`)

matches:= re.FindStringSubmatch(text)

if matches != nil {

    next := matches[1]

    prev := matches[2]

    last := matches[3]

    fmt.Printf("next = %s, prev = %s, last = %s\n", next, prev, last)

}

稍后编辑:您可能也可以使用 xml 包来实现相同的结果,通过将该输出解析为 XML,但您需要稍微转换一下输出。


查看完整回答
反对 回复 2022-01-04
  • 2 回答
  • 0 关注
  • 192 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号