最近開(kāi)始上手Golang,了解了一下web request相關(guān)的東西。golang web使用的包是net/http, 在其基礎(chǔ)上封裝了一層 httprouter,這個(gè)框架被廣泛應(yīng)用,在httprouter之上又封裝一層成為gin框架,gin是一個(gè)高性能框架,使用起來(lái)非常簡(jiǎn)單。只需從context中解析就可以,被應(yīng)用在大型高性能項(xiàng)目上。如果學(xué)習(xí),還是從底層開(kāi)始。
10年積累的網(wǎng)站建設(shè)、網(wǎng)站制作經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶(hù)對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶(hù)得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有福建免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。httprouter的資料有很多,大部分都重點(diǎn)介紹GET 及相應(yīng)的參數(shù)解析,形如:
router.GET("/tasks/:user_key", TaskList)
對(duì)于這種類(lèi)型的參數(shù)解析,只需要從router 的 param中獲取參數(shù)即可,即下面的第三個(gè)參數(shù)
func TaskList(w http.ResponseWriter, r *http.Request, params httprouter.Params)
對(duì)于POST請(qǐng)求,這種傳參形式非常受限,大部分情況下post的數(shù)據(jù)都是通過(guò)json 或者 form等格式進(jìn)行傳遞的。網(wǎng)上這方面的內(nèi)容貌似相對(duì)比較少,下面是我整理的POST參數(shù)解析方式。
1. 解析FORM數(shù)據(jù)資料顯示,Golang的httprouter很好的封裝了form數(shù)據(jù)的請(qǐng)求,因此對(duì)于form格式的數(shù)據(jù)只需使用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中發(fā)送數(shù)據(jù)的時(shí)候選擇的是:?x-www-form-urlencoded
2. 解析Json數(shù)據(jù)對(duì)于json數(shù)據(jù),暫時(shí)沒(méi)有看到httprouter中封裝的好的方法。因此只能從body中讀取。這樣就是通過(guò)header中的信息 + body中的信息共同解析出傳送的數(shù)據(jù)。
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))
}
通過(guò)這種方法,可以獲取POST傳過(guò)來(lái)的任何形式的數(shù)據(jù)。不管是form數(shù)據(jù)還是json數(shù)據(jù)
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
文章名稱(chēng):golangPOSTdata解析-創(chuàng)新互聯(lián)
本文鏈接:http://www.rwnh.cn/article32/dgsjpc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、ChatGPT、網(wǎng)站維護(hù)、響應(yīng)式網(wǎng)站、定制開(kāi)發(fā)、App開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容