日常我們開(kāi)發(fā)時(shí),會(huì)遇到各種各樣的奇奇怪怪的問(wèn)題(踩坑o(╯□╰)o),這個(gè)常見(jiàn)問(wèn)題系列就是我日常遇到的一些問(wèn)題的記錄文章系列,這里整理匯總后分享給大家,讓其還在深坑中的小伙伴有繩索能爬出來(lái)。
成都創(chuàng)新互聯(lián)公司主營(yíng)孝昌網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,app軟件開(kāi)發(fā)公司,孝昌h5小程序開(kāi)發(fā)搭建,孝昌網(wǎng)站營(yíng)銷(xiāo)推廣歡迎孝昌等地區(qū)企業(yè)咨詢(xún)
同時(shí)在這里也歡迎大家把自己遇到的問(wèn)題留言或私信給我,我看看其能否給大家解決。
本文主要是對(duì)我日常在使用golang時(shí)遇到的一些問(wèn)題與解決方式進(jìn)行的匯總,在此提供給大家便于排查一些遇到的問(wèn)題,其中有更好的解決方案可在評(píng)論區(qū)留言。
我在使用postmain測(cè)試接口時(shí)后端報(bào)錯(cuò),該錯(cuò)誤原因是因?yàn)槭褂谜?qǐng)求頭使用的是form-data而后端接受使用的json,這時(shí)就會(huì)出現(xiàn)該問(wèn)題
問(wèn)題圖
這里改成使用json格式提交即可解決該問(wèn)題。
解決圖
goget請(qǐng)求可以接受結(jié)構(gòu)體。
接收者是結(jié)構(gòu)體時(shí),可以是結(jié)構(gòu)體類(lèi)型、結(jié)構(gòu)體指針類(lèi)型。調(diào)用時(shí)不區(qū)分調(diào)用者是結(jié)構(gòu)體還是結(jié)構(gòu)體指針,go語(yǔ)言會(huì)自動(dòng)轉(zhuǎn)化為對(duì)應(yīng)的結(jié)構(gòu)體或結(jié)構(gòu)體指針。
golang net/http標(biāo)準(zhǔn)庫(kù)的client是可以配置各種代理的,http/https/sock5等,不過(guò)fasthttp僅支持配置sock5代理,通過(guò)定義fasthttp dialfunc實(shí)現(xiàn):
項(xiàng)目中碰到的問(wèn)題是,ops只提供了用squid搭建的http代理,所以是想重新定義一個(gè)http代理的dialfunc,找了fasthttp github倉(cāng)庫(kù)的issue,作者提供了一個(gè)dialFunc
經(jīng)測(cè)試,訪(fǎng)問(wèn)https的站點(diǎn)是OK的,訪(fǎng)問(wèn)http的站點(diǎn)不行,代理連接不上。先說(shuō)一下http/https代理的區(qū)別,再說(shuō)原因。
使用代理訪(fǎng)問(wèn)https網(wǎng)站時(shí),會(huì)先發(fā)CONNECT請(qǐng)求,讓代理與目標(biāo)站點(diǎn)建立一個(gè)http tunnel,之后在這個(gè)tunnel基礎(chǔ)上進(jìn)行傳輸,對(duì)應(yīng)到上面的dialFunc過(guò)程就是:
可以看到http站點(diǎn)是不需要發(fā)CONNECT請(qǐng)求的,而是直接將目標(biāo)站點(diǎn)的url作為path 填寫(xiě)在http請(qǐng)求頭中。
為何上面的dialfunc訪(fǎng)問(wèn)http站點(diǎn)不行呢,查了squid代理的文檔,發(fā)現(xiàn)squid默認(rèn)會(huì)禁止非https站點(diǎn)通過(guò)CONNECT方法建立通道,自己搭了個(gè)squid代理去掉配置項(xiàng),發(fā)現(xiàn)上面的dialfunc是可以訪(fǎng)問(wèn)http、https站點(diǎn)的,就是說(shuō)http,https都先建立通過(guò),再請(qǐng)求。
看了fasthttp的源碼,沒(méi)辦法在請(qǐng)求前修改request header中的path為目標(biāo)站點(diǎn)url,所以如果需要通過(guò)fasthttp使用http代理,那么可以使用上面的dialfunc,同時(shí)代理需要允許非443端口的站點(diǎn)可以建立通道。如果做不到這一點(diǎn),那么還是建議使用標(biāo)準(zhǔn)庫(kù)net/http的client,會(huì)更方便一點(diǎn)。
上面是從源碼復(fù)制得出。
Form屬性包含了post表單和url后面跟的get參數(shù)。
PostForm屬性只包含了post表單參數(shù)。
實(shí)踐數(shù)據(jù)如下:
打印請(qǐng)求頭:
打印Form和PostForm
客戶(hù)端打?。?/p>
有時(shí)候需要處理很多請(qǐng)求,顯然,一個(gè)一個(gè)去處理是要花費(fèi)很多時(shí)間的
我們就需要用到并發(fā)的方式,python并發(fā)請(qǐng)求的方法很多,從簡(jiǎn)單到復(fù)雜。
接口參數(shù)狠簡(jiǎn)單,headers、body,帶上cookie就好了
因?yàn)槭遣樵?xún)一組數(shù)據(jù),所有先把查詢(xún)對(duì)象變量化(可以寫(xiě)到excel里去讀,這里就不介紹了,提供這個(gè)思路)
構(gòu)造頭信息,直接復(fù)制
執(zhí)行請(qǐng)求步驟,這一步是核心內(nèi)容
git地址:
網(wǎng)站欄目:go語(yǔ)言請(qǐng)求頭 go語(yǔ)言命令
文章路徑:http://jinyejixie.com/article30/dodpgpo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、建站公司、動(dòng)態(tài)網(wǎng)站、Google、品牌網(wǎng)站制作、外貿(mào)建站
聲明:本網(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)容