我刚开始学习 Go 中的 REST API,我不知道如何在我的 HTML 文件中显示 GET 请求的响应。我基本上所做的是创建一个GetCurrency()从第三方 API 获取数据的函数。现在我正在尝试Currency在 HTML 文件中呈现响应,但我似乎没有得到正确的结果,因为每当加载本地主机时,/getcurrency我都会得到一个空白页面,尽管我的.gohtml文件包含一个表单。这是我在 main.go 文件中的结构type pageData struct { Title string Currency string}这是我在 main.go 文件中的主要功能func main() { http.HandleFunc("/", home) http.HandleFunc("/home", home) http.HandleFunc("/getcurrency", getCurrency) http.ListenAndServe(":5050", nil)}这是我home执行 HTML 的函数func home(w http.ResponseWriter, req *http.Request) { pd := pageData{ Title: "Etmazec Home Page", } err := tpl.ExecuteTemplate(w, "homepage.gohtml", pd) if err != nil { log.Println(err) http.Error(w, "Internal server error", http.StatusInternalServerError) }}这是我在文件getCurrency()中的功能main.gofunc getCurrency(w http.ResponseWriter, req *http.Request) { pd := pageData{ Title: "Welcome to the exchange rate website", } err := tpl.ExecuteTemplate(w, "currency.gohtml", pd) response, err := http.Get("https://api.coinbase.com/v2/prices/spot?currency=USD") if err != nil { fmt.Printf("The http requst failed with error %s \n", err) } else { data, _ := ioutil.ReadAll(response.Body) pd.Currency = string(data) fmt.Println(string(data)) }}最后,这是我的currency.gohtml身体<body> <h1>TOP HITS</h1> <nav> <ul> <li><a href="/home">HOME PAGE</a> </ul> </nav> <form action="/getcurrency" method="GET"> <label for="fname">Your Name</label> <input type="text" name="fname"> <input type="submit"> </form> {{.Currency}} </body>这是我的home.gohtml文件 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Title</title> </head> <link rel="stylesheet" href="/public/css/main.css"> <body> </body> </html>
1 回答
蛊毒传说
TA贡献1895条经验 获得超3个赞
fmt.Println(string(data))
from func getCurrency() 打印到标准输出。因此,您会在应用程序控制台中看到生成的 HTML,但它不会返回到浏览器。
https://golang.org/pkg/fmt/#Println:
Println 格式使用其操作数的默认格式并写入标准输出。
您需要将字节发送到w http.ResponseWriter
处理程序参数中:
fmt.Fprintln(w, string(data))
https://golang.org/pkg/fmt/#Fprintln
- 1 回答
- 0 关注
- 231 浏览
添加回答
举报
0/150
提交
取消