免费国产欧美国日产_少妇AV一区二区三区无码_蜜桃精品av无码喷奶水小说_jk18禁网站视频_精产国品一二三级产品区别_被夫の上司に犯波多野结衣_78m成人手机免费看_最爽最刺激18禁视频_偷偷色噜狠狠狠狠的777米奇

易優(yōu)GEO 重磅上線 ~ 一站式GEO優(yōu)化工具,讓豆包、文心一言、DeepSeek 在回答中主動(dòng)推薦你的品牌,搶占AI流量入口!  點(diǎn)擊查看

小程序模板網(wǎng)

微信小程序帶參數(shù)二維碼讓我重新認(rèn)識(shí)Post網(wǎng)絡(luò)請(qǐng)求

發(fā)布時(shí)間:2017-12-07 08:46 所屬欄目:小程序開發(fā)教程

自認(rèn)為小程序開發(fā)基礎(chǔ)篇已經(jīng)“掃”完了,結(jié)果今天嘗試做小程序帶參數(shù)二維碼功能時(shí)尷尬了,瞬間鄙視自己的技術(shù)水平。本文雖說探討的是微信小程序帶參數(shù)二維碼的問題,但更多解決的是HTTP請(qǐng) ...

 
 
 

自認(rèn)為小程序開發(fā)基礎(chǔ)篇已經(jīng)“掃”完了,結(jié)果今天嘗試做小程序帶參數(shù)二維碼功能時(shí)尷尬了,瞬間鄙視自己的技術(shù)水平。本文雖說探討的是微信小程序帶參數(shù)二維碼的問題,但更多解決的是HTTP請(qǐng)求中Post請(qǐng)求狀態(tài)下的傳參問題。適合不限于小程序開發(fā)的java、php、android、ios等初級(jí)開發(fā)者,高手請(qǐng)繞道,感謝開發(fā)者@鮑紅星對(duì)我的提問。

 

本文大概

1888

讀完共需

6

分鐘

本節(jié)目標(biāo):完成帶參數(shù)的小程序二維碼實(shí)現(xiàn)步驟如下:

 

一、打開API:

 

 

二、根據(jù)文檔提示,跳轉(zhuǎn)到獲取access_token界面【https://mp.weixin.qq.com/wiki?id=mp1421140183】關(guān)于access_token簡(jiǎn)單來說是公眾號(hào)的全局唯一接口調(diào)用憑據(jù),公眾號(hào)調(diào)用各接口時(shí)都需使用access_token。access_token的存儲(chǔ)至少要保留512個(gè)字符空間。access_token的有效期目前為2個(gè)小時(shí),需定時(shí)刷新,重復(fù)獲取將導(dǎo)致上次獲取的access_token失效;他是對(duì)企業(yè)appid和appsecrect的一種保護(hù),通常交由企業(yè)后端帶上appid和appsecrect兩個(gè)參數(shù)去請(qǐng)求微信后臺(tái)得到token,接下來token將成為企業(yè)后端、前端、微信后端交互的唯一憑證。獲取方法api提示比較清晰:

 

 

我是在web開發(fā)工具自己去請(qǐng)求的token,也很正常的獲取到了。接下來就是比較牛(Dan)逼(Teng)的地方了。

 

三、根據(jù)token和小程序api的提示,獲得帶參數(shù)的二維碼,代碼如下:

 

 

但是,結(jié)果讓我失望了

反復(fù)報(bào)錯(cuò)類型為token無效,參數(shù)錯(cuò)誤之類的信息【微信開發(fā)錯(cuò)誤請(qǐng)求碼鏈接:https://mp.weixin.qq.com/wiki/17/fa4e1434e57290788bde25603fa2fcbd.html由于api沒有說明是否為get或者post,于是乎我換成get請(qǐng)求,結(jié)果依然是token無效。

 

 

各種檢驗(yàn)參數(shù)和請(qǐng)求方法嘗試,都無果......

 

最后大膽嘗試了一個(gè)從來沒有寫過的post寫法,請(qǐng)看下圖:

 

 

很榮幸,這種寫法我成功請(qǐng)求到了帶參數(shù)的二維碼了!但是有很多不解!

 

 

Ok,微信小程序得到帶參數(shù)的二維碼應(yīng)該用post請(qǐng)求,access_token必須直接跟在url后面【貌似JSSDK開發(fā)也是這么個(gè)情況】。這是本文的重要結(jié)論

 

問題是解決了,疑問依然存在——對(duì)HTTP的get和post請(qǐng)求有誤解

 

之前的認(rèn)識(shí):

GET方法:使用GET方法時(shí),查詢字符串(鍵值對(duì))被附加在URL地址后面一起發(fā)送到服務(wù)器,如:http://haolong?id=12&name="張三"

特點(diǎn):GET請(qǐng)求能夠被緩存;GET請(qǐng)求會(huì)保存在瀏覽器的瀏覽記錄中;以GET請(qǐng)求的URL能夠保存為瀏覽器書簽;GET請(qǐng)求有長(zhǎng)度限制;GET請(qǐng)求主要用以獲取數(shù)據(jù)

POST方法:使用POST方法時(shí),查詢字符串在POST信息中單獨(dú)存在,和HTTP請(qǐng)求一起發(fā)送到服務(wù)器:data{name1=value1&name2=value2},然后把整個(gè)data傳值

特點(diǎn):POST請(qǐng)求不能被緩存下來;POST請(qǐng)求不會(huì)保存在瀏覽器瀏覽記錄中;以POST請(qǐng)求的URL無法保存為瀏覽器書簽;POST請(qǐng)求沒有長(zhǎng)度限制

重點(diǎn)是:習(xí)慣性地在get請(qǐng)求狀態(tài)下參數(shù)是拼接到url后面的,而post請(qǐng)求狀態(tài)下參數(shù)是先由body封裝,然后傳到后臺(tái)。

而上圖中post請(qǐng)求狀態(tài)下,既有url后面直接拼接字段,也有data組里面封裝,這是為什么呢?

感謝@花生@三胖的解釋

不是所有的Post請(qǐng)求參數(shù)就一定會(huì)放在body體類,看后臺(tái)代碼怎么處理,后臺(tái)要這樣寫規(guī)定了是POST 請(qǐng)求且參數(shù)必須封裝在body體內(nèi),如下圖

 

 

 而下方:雖然規(guī)定了是POST請(qǐng)求但是他獲取參數(shù)是通過url 傳參的

 

 

get或post情況下,是否在url后面直接傳參是非必須的,是根據(jù)后臺(tái)開發(fā)人員或需求限制決定的。一般POST 請(qǐng)求都是去后臺(tái)修改數(shù)據(jù)的 ,既然規(guī)定了POST 請(qǐng)求最好就將參數(shù)放在body體里相對(duì)安全;get一般都是查詢數(shù)據(jù);用url  穿參數(shù)的比較多因?yàn)榧词贡┞读藚?shù)也就是被查詢;不會(huì)被修改數(shù)據(jù)。

 

在小程序帶參數(shù)二維碼這塊是微信后臺(tái)開發(fā)做過此種限制,所以如果按照之前的套路將token放到data組中的話,微信后臺(tái)是判斷你沒有傳token參數(shù),二維碼也就請(qǐng)求不到了。由于API也未明確指出,特寫此文分享給大家。

 

參數(shù)攜帶可以在path字段中,與get寫法類似傳參:pages/index?query=1

pages/index:頁面路徑

query=1:參數(shù)的鍵值對(duì),多個(gè)參數(shù)用&隔開

該字段的值:1可以在指定頁面的onload方法中,用options參數(shù)獲取:this.setData({query:options.query})

 

請(qǐng)求成功回來的帶參數(shù)二維碼是二進(jìn)制buffer格式,需要提交給后端處理轉(zhuǎn)換成圖片,最后返回給前端保存。

 

另外:通過該接口,僅能生成已發(fā)布的小程序的二維碼,并不代表未發(fā)布的小程序不能生成帶參數(shù)二維碼;未發(fā)布小程序可以生成開發(fā)版的帶參二維碼。 帶參二維碼只有 100000 個(gè),請(qǐng)謹(jǐn)慎調(diào)用,POST參數(shù)需要轉(zhuǎn)成 json 字符串,不支持 form 表單提交。

 

辛苦勞作一番,卻發(fā)現(xiàn)已經(jīng)有現(xiàn)成的第三方工具可以便捷得到帶參數(shù)的小程序二維碼,比如:HotApp、草料、阿拉丁等,但是需要輸入appid和appsecrect等敏感信息,酌情使用。



易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://www.szcjxy.com/wxmini/doc/course/18062.html 復(fù)制鏈接 如需定制請(qǐng)聯(lián)系易優(yōu)客服咨詢: 點(diǎn)擊咨詢
在線客服