首先,这是我第一个使用 Go 的非虚拟程序。任何建议将不胜感激。
代码说明:
我想从对信息进行分页的 API 中检索所有信息。所以我想遍历所有页面以获取所有信息。
这是我到目前为止所做的:
我有这两个功能:
func request(requestData *RequestData) []*ProjectsResponse {
client := &http.Client{
Timeout: time.Second * 10,
}
projects := []*ProjectsResponse{}
innerRequest(client, requestData.URL, projects)
return projects
}
func innerRequest(client *http.Client, URL string, projects []*ProjectsResponse) {
if URL == "" {
return
}
req, err := http.NewRequest("GET", URL, nil)
if err != nil {
log.Printf("Request creation failed with error %s\n", err)
}
req.Header.Add("Private-Token", os.Getenv("API_KEY"))
res, err := client.Do(req)
log.Printf("Executing request: %s", req.URL)
if err != nil {
log.Printf("The HTTP request failed with error %s\n", err)
}
data, _ := ioutil.ReadAll(res.Body)
var response ProjectsResponse
err = json.Unmarshal(data, &response)
if err != nil {
log.Printf("Unmarshalling failed with error %s\n", err)
}
projects = append(projects, &response)
pagingData := getPageInformation(res)
innerRequest(client, pagingData.NextLink, projects)
}
不良行为:
数组中的值projects []*ProjectsResponse被附加到递归的每次迭代中,但是当递归结束时,我得到一个空数组列表。因此,不知何故,在innerRequests结束之后,在方法project内的变量中request我什么也得不到。
希望有人发现我的错误。提前致谢。
皈依舞
慕容3067478
相关分类