最近開始上手Golang,了解了一下web request相關的東西。golang web使用的包是net/http, 在其基礎上封裝了一層 httprouter,這個框架被廣泛應用,在httprouter之上又封裝一層成為gin框架,gin是一個高性能框架,使用起來非常簡單。只需從context中解析就可以,被應用在大型高性能項目上。如果學習,還是從底層開始。

httprouter的資料有很多,大部分都重點介紹GET 及相應的參數解析,形如:
router.GET("/tasks/:user_key", TaskList)對于這種類型的參數解析,只需要從router 的 param中獲取參數即可,即下面的第三個參數
func TaskList(w http.ResponseWriter, r *http.Request, params httprouter.Params)對于POST請求,這種傳參形式非常受限,大部分情況下post的數據都是通過json 或者 form等格式進行傳遞的。網上這方面的內容貌似相對比較少,下面是我整理的POST參數解析方式。
1. 解析FORM數據資料顯示,Golang的httprouter很好的封裝了form數據的請求,因此對于form格式的數據只需使用form就能夠得到。前提是需要先parseform 再get值。即先r .ParseForm()? 再Get key:?val := r.Form.Get("user") 即可。
func SaveTasks(w http.ResponseWriter, r *http.Request, params httprouter.Params) {
r.ParseForm()
val := r.Form.Get("user")
log.Println("val: ", val)
fmt.Fprintf(w, "Get request ", val)
}在Postman中發送數據的時候選擇的是:?x-www-form-urlencoded
2. 解析Json數據對于json數據,暫時沒有看到httprouter中封裝的好的方法。因此只能從body中讀取。這樣就是通過header中的信息 + body中的信息共同解析出傳送的數據。
func Tasklist(w http.ResponseWriter, r *http.Request, params httprouter.Params) {
log.Printf("Get %s request. host: %s params: %s\n", r.Method, r.Host)
len := r.ContentLength
rtype := r.Header.Get("Content-Type")
content := make([]byte, len)
r.Body.Read(content)
fmt.Println("request-type: ", rtype)
fmt.Println("request-lenght: ", len)
fmt.Println("request-content: ", string(content))
fmt.Fprintf(w, "content type: %s, get request:%s", rtype, string(content))
}通過這種方法,可以獲取POST傳過來的任何形式的數據。不管是form數據還是json數據

你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧
文章名稱:golangPOSTdata解析-創新互聯
本文鏈接:http://www.yijiale78.com/article32/dgsjpc.html
成都網站建設公司_創新互聯,為您提供微信小程序、ChatGPT、網站維護、響應式網站、定制開發、App開發
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯