猿问

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

这是我的代码:


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的函数循环浏览页面


但我不知道如何让它工作给我每个下一页游标,所以我可以从每个页面获取数据。


慕娘9325324
浏览 129回答 1
1回答

千巷猫影

这是一个典型的 JSON API 工作流:package mainimport (   "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 mainimport "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}}]}
随时随地看视频慕课网APP

相关分类

Go
我要回答