保存页面
saveHandler函数将处理放置在编辑页面上的表单的提交。通过取消main函数中注释的相关代码行,让我们来实现这个处理函数:
func saveHandler(w http.ResponseWriter, r *http.Request) {
title := r.URL.Path[len("/save/"):]
body := r.FormValue("body")
p := &Page{Title: title, Body: []byte(body)}
p.save()
http.Redirect(w, r, "/view/"+title, http.StatusFound)
}页面标题(URL中提供的)和表单中唯一的字段Body,被存储在一个新的Page。然后save()方法被调用将数据写入一个文件,并且客户端被重置到 /view/ 页面。
通过FormValue的返回值是string类型。我们必须在将该值填入Page结构体之前转换为[]byte。我们使用 []byte(body) 来执行这个转换过程。