Go 使用模板响应HTTP请求
示例
可以http.ResponseWriter在Go中使用模板将响应写入。如果您希望创建动态页面,这将证明是一种便捷的工具。
(要了解模板在Go中的工作方式,请访问Go模板文档页面。)
继续使用一个简单的示例来利用html/templateHTTP响应HTTP请求:
package main
import(
"html/template"
"net/http"
"log"
)
func main(){
http.HandleFunc("/",WelcomeHandler)
http.ListenAndServe(":8080",nil)
}
type User struct{
Name string
nationality string //未导出的字段。
}
func check(err error){
if err != nil{
log.Fatal(err)
}
}
func WelcomeHandler(w http.ResponseWriter, r *http.Request){
ifr.Method== "GET"{
t,err := template.ParseFiles("welcomeform.html")
check(err)
t.Execute(w,nil)
}else{
r.ParseForm()
myUser := User{}
myUser.Name= r.Form.Get("entered_name")
myUser.nationality= r.Form.Get("entered_nationality")
t, err := template.ParseFiles("welcomeresponse.html")
check(err)
t.Execute(w,myUser)
}
}哪里,内容
welcomeform.html是:
<head>
<title> Help us greet you </title>
</head>
<body>
<form method="POST" action="/">
Enter Name: <input type="text" name="entered_name">
Enter Nationality: <input type="text" name="entered_nationality">
<input type="submit" value="问候我!">
</form>
</body>welcomeresponse.html是:
<head>
<title> Greetings, {{.Name}} </title>
</head>
<body>
Greetings, {{.Name}}.<br>
We know you are a {{.nationality}}!
</body>注意:
确保.html文件在正确的目录中。
http://localhost:8080/启动服务器后可以访问何时。
提交表单后可以看到,模板包无法按预期分析该结构的未导出国籍字段。