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

循环访问 API 响应以获取多个页面

循环访问 API 响应以获取多个页面

Go
慕娘9325324 2022-09-12 20:33:57
这是我的代码:func nextpage(id int, currentpage string) string {    response, err := http.Get(fmt.Sprintf("https://groups.roblox.com/v1/groups/%d/users?sortOrder=Asc&limit=100&cursor=%s", id, currentpage))    if err != nil {        panic(err)    }    defer response.Body.Close()    var getcursor *gus    error := json.NewDecoder(response.Body).Decode(&getcursor)    if error != nil {        fmt.Println(error)    }    return getcursor.Nextpagecursor}func cycle(id int) string {    secondpage := nextpage(id, "")    thirdpage := nextpage(id, secondpage)    fourthpage := nextpage(id, thirdpage)    return secondpage}这是做什么的:它向 https://groups.roblox.com/v1/groups/2/users?sortOrder=Asc&limit=100&cursor= 发送请求然后它返回给出的响应的下一页游标。然后我尝试使用最后一个名为cover的函数循环浏览页面但我不知道如何让它工作给我每个下一页游标,所以我可以从每个页面获取数据。
查看完整描述

1 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

这是一个典型的 JSON API 工作流:


package main


import (

   "encoding/json"

   "net/http"

)


type users struct {

   NextPageCursor string

   Data []struct {

      User struct { Username string }

   }

}


func (u *users) get() error {

   req, err := http.NewRequest("GET", "https://groups.roblox.com/v1/groups/2/users", nil)

   if err != nil {

      return err

   }

   if u.NextPageCursor != "" {

      q := req.URL.Query()

      q.Set("cursor", u.NextPageCursor)

      req.URL.RawQuery = q.Encode()

   }

   res, err := new(http.Client).Do(req)

   if err != nil {

      return err

   }

   defer res.Body.Close()

   return json.NewDecoder(res.Body).Decode(u)

}

例:


package main

import "fmt"


func main() {

   var u users

   for range [2]struct{}{} {

      u.get()

      fmt.Printf("%+v\n", u)

   }

}

结果:


{NextPageCursor:155884_1_1c6bfd900d25d25d1949dcfead5765e5 Data:[{User:{Username:jkid243}} {User:{Username:CpMod}} {User:{Username:Zeluka}} {User:{Username:tfts}} {User:{Username:saveaseal13}} {User:{Username:Beast440}} {User:{Username:leolr9}} {User:{Username:eggnog22}} {User:{Username:mathgeek007}} {User:{Username:WhatsForDinner}}]}

{NextPageCursor:367165_1_903387d5f21f53fccf4a693d918d880a Data:[{User:{Username:banjoist26}} {User:{Username:itsmariosbuddy}} {User:{Username:toabytooby2211}} {User:{Username:ShadowLuigi}} {User:{Username:calim}} {User:{Username:Sonicthehedgehog9000}} {User:{Username:benjy8}} {User:{Username:bregfhafrh}} {User:{Username:crashman15}} {User:{Username:hiedi00}}]}



查看完整回答
反对 回复 2022-09-12
  • 1 回答
  • 0 关注
  • 126 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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