GO随笔-表单输入
表單的處理
對于表單form都不陌生,GO是如何處理表單的呢?
先寫個例子:
文件命名為login.gtpl(與html無異)
緊接著,需要有http服務
這就寫好了一個能夠完成登陸操作的功能。
用戶訪問http://domain:9090/login即可看到登陸界面。緊接著輸入用戶名和密碼即可完成登陸。
中間都發生了什么事情呢?
- 服務端綁定“/login”在Handle(login)上。
- 服務端監聽9090端口。
- 用戶訪問服務端的9090端口。并且url是“/login”
- 服務端接收到請求,解析路由后,將該請求分配給Handle(login),進入登陸邏輯。
這就是請求的過程。之后是響應過程
- 通過r.Method拿到請求的方法
- 判斷請求的方法,若是get,則渲染模板template.ParseFiles("login.gtpl")。并且將模板響應(w)t.Execute(w, nil)給客戶端,瀏覽器上顯示登陸界面。
- 當用戶填寫完信息點擊登陸按鈕時,將表單信息以post方法請求urlaction="/login"。
- 再次重復以上邏輯,判斷方法為post時執行解析表單操作。r.ParseForm()并且將相關信息打印出來。
這里需要注意的一點是。Handler是不會自動解析表單的,需要顯示的調用r.ParseForm()。才能對表單執行操作r.Form["username"]
request.Form是一個url.Values類型,里面存儲的是對應的類似key=value的信息
另外Request本身提供了FormValue()來獲取用戶提供的參數。如r.Form["username"]也可寫成r.FormValue("username")。調用r.FormValue時會自動調用r.ParseForm,所以不必提前調用。
總結
- 上一篇: 剑指offer之python实现
- 下一篇: 如何在GitHub上大显身手?