如何使用Golang http.ResponseWriter将HTML字符串显示为网页?

coo*_*aac 7 http go

我在第19章的例子中讲述了The Way to Go.

这是我的内容 main.go

package main

import (
    "fmt"
    "net/http"
)

const AddForm = `
<form method="POST" action="/add">
URL: <input type="text" name="url">
<input type="submit" value="Add">
</form>
`

func main() {
    http.HandleFunc("/add", Add)
    http.ListenAndServe(":8080", nil)
}

func Add(w http.ResponseWriter, r *http.Request) {
    url := r.FormValue("url")
    if url == "" {
        fmt.Fprint(w, AddForm)
        return
    }
    key := "Placeholder"
    fmt.Fprintf(w, "http://localhost:8080/%s", key)
}
Run Code Online (Sandbox Code Playgroud)

根据这本书及其截图,我应该看到在浏览器中呈现的有效表单.但是现在,我只能看到原始字符串.

我很新,所以我不确定自从编写示例以来语言是否已经发展了很多.我的版本是go version go1.6.2 linux/amd64,我认为这本书是在2012年用旧版本的go编写的.

如何修改它以使其在浏览器中呈现为表单?谢谢.

coo*_*aac 10

阅读完文档后,在当前版本的golang中,http.ResponseWriter的默认内容类型为text/plain,并且在手动设置内容类型后text/html,事情按预期工作.

if url == "" {
    w.Header().Set("Content-Type", "text/html; charset=utf-8")
    fmt.Fprint(w, AddForm)
    return
}
Run Code Online (Sandbox Code Playgroud)