我正在对特定html模板的页面加载发出api请求。这会导致问题所以我想在程序运行时进行api调用,以便在查看html页面时可以访问数据。
所以我是GoLang的新手,当我在main中调用它时,我无法理解传递给这个函数的参数。
func RequestTopMovies(w http.ResponseWriter, r *http.Request) {
res, err := http.Get(url)
if err != nil {
panic(err)
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
panic(err)
}
var p Payload
err = json.Unmarshal(body, &p)
if err != nil {
panic(err)
}
for i := 0; i < len(p.Results); i++ {
fmt.Println(p.Results[i].Overview) // Prints to your terminal
}
}
所以现在我已经在p.Results中得到了回应。
我希望能够在我的程序中的其他位置访问此数据。我以为我可以调用这个函数。
那我怎么能在main中调用这个函数呢?
func main() {
RequestTopMovies(http.ResponseWriter, http.Request)
http.HandleFunc("/", mainHandler)
http.HandleFunc("/about", aboutHandler)
http.HandleFunc("/TopPicks", TopMoviesHandler)
http.ListenAndServe(":8080", nil)
}
如何将此函数传递给另一个函数以使其返回响应?
答案 0 :(得分:2)
RequestTopMovies是一种http.Handler
类型,它将作为处理程序函数(即控制器)自动调用。
要访问收到的数据,请使用上下文(检查大猩猩/上下文)或只创建一个切片或映射来保存数据结构,以便您可以从代码中的其他位置访问它,即
var Temp = map[string]Payload{}
一旦您解组了数据,就像
一样存储它Temp[key] = p
然后在其他处理程序中,你可以抓取像
这样的数据func SomeHandler(rw http.ResponseWriter, *http.Request) {
p := Temp[key]
// ...
}