在 HTML 文件中呈现 GET 请求响应

我刚开始学习 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.go


func 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>

慕姐4208626
浏览 186回答 1
1回答

蛊毒传说

fmt.Println(string(data))from func getCurrency() 打印到标准输出。因此,您会在应用程序控制台中看到生成的 HTML,但它不会返回到浏览器。https://golang.org/pkg/fmt/#Println:Println 格式使用其操作数的默认格式并写入标准输出。您需要将字节发送到w http.ResponseWriter处理程序参数中:fmt.Fprintln(w,&nbsp;string(data))https://golang.org/pkg/fmt/#Fprintln
打开App,查看更多内容
随时随地看视频慕课网APP