中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

golangPOSTdata解析-創(chuàng)新互聯(lián)

1. 問(wèn)題背景

最近開(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)

營(yíng)銷(xiāo)型網(wǎng)站建設(shè)
水城县| 商都县| 巢湖市| 东阳市| 梅河口市| 宁南县| 自治县| 孟津县| 商丘市| 平顶山市| 平阴县| 阳春市| 邵武市| 嘉兴市| 奉化市| 溧阳市| 江津市| 库车县| 十堰市| 宁武县| 葫芦岛市| 光泽县| 内江市| 宁远县| 威海市| 河北区| 卫辉市| 临夏市| 衡阳县| 鸡泽县| 浪卡子县| 上高县| 崇义县| 武山县| 龙海市| 明星| 宜宾县| 洛扎县| 克东县| 瑞丽市| 宁津县|