网友真实露脸自拍10p,成人国产精品秘?久久久按摩,国产精品久久久久久无码不卡,成人免费区一区二区三区

小程序模板網

微信小程序帶參數二維碼讓我重新認識Post網絡請求

發布時間:2017-12-07 08:46 所屬欄目:小程序開發教程

自認為小程序開發基礎篇已經“掃”完了,結果今天嘗試做小程序帶參數二維碼功能時尷尬了,瞬間鄙視自己的技術水平。本文雖說探討的是微信小程序帶參數二維碼的問題,但更多解決的是HTTP請 ...

 
 
 

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

 

本文大概

1888

讀完共需

6

分鐘

本節目標:完成帶參數的小程序二維碼實現步驟如下:

 

一、打開API:

 

 

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

 

 

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

 

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

 

 

但是,結果讓我失望了

反復報錯類型為token無效,參數錯誤之類的信息【微信開發錯誤請求碼鏈接:https://mp.weixin.qq.com/wiki/17/fa4e1434e57290788bde25603fa2fcbd.html由于api沒有說明是否為get或者post,于是乎我換成get請求,結果依然是token無效。

 

 

各種檢驗參數和請求方法嘗試,都無果......

 

最后大膽嘗試了一個從來沒有寫過的post寫法,請看下圖:

 

 

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

 

 

Ok,微信小程序得到帶參數的二維碼應該用post請求,access_token必須直接跟在url后面【貌似JSSDK開發也是這么個情況】。這是本文的重要結論

 

問題是解決了,疑問依然存在——對HTTP的get和post請求有誤解

 

之前的認識:

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

特點:GET請求能夠被緩存;GET請求會保存在瀏覽器的瀏覽記錄中;以GET請求的URL能夠保存為瀏覽器書簽;GET請求有長度限制;GET請求主要用以獲取數據

POST方法:使用POST方法時,查詢字符串在POST信息中單獨存在,和HTTP請求一起發送到服務器:data{name1=value1&name2=value2},然后把整個data傳值

特點:POST請求不能被緩存下來;POST請求不會保存在瀏覽器瀏覽記錄中;以POST請求的URL無法保存為瀏覽器書簽;POST請求沒有長度限制

重點是:習慣性地在get請求狀態下參數是拼接到url后面的,而post請求狀態下參數是先由body封裝,然后傳到后臺。

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

感謝@花生@三胖的解釋

不是所有的Post請求參數就一定會放在body體類,看后臺代碼怎么處理,后臺要這樣寫規定了是POST 請求且參數必須封裝在body體內,如下圖

 

 

 而下方:雖然規定了是POST請求但是他獲取參數是通過url 傳參的

 

 

get或post情況下,是否在url后面直接傳參是非必須的,是根據后臺開發人員或需求限制決定的。一般POST 請求都是去后臺修改數據的 ,既然規定了POST 請求最好就將參數放在body體里相對安全;get一般都是查詢數據;用url  穿參數的比較多因為即使暴露了參數也就是被查詢;不會被修改數據。

 

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

 

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

pages/index:頁面路徑

query=1:參數的鍵值對,多個參數用&隔開

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

 

請求成功回來的帶參數二維碼是二進制buffer格式,需要提交給后端處理轉換成圖片,最后返回給前端保存。

 

另外:通過該接口,僅能生成已發布的小程序的二維碼,并不代表未發布的小程序不能生成帶參數二維碼;未發布小程序可以生成開發版的帶參二維碼。 帶參二維碼只有 100000 個,請謹慎調用,POST參數需要轉成 json 字符串,不支持 form 表單提交。

 

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



易優小程序(企業版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://www.xiuhaier.com/wxmini/doc/course/18062.html 復制鏈接 如需定制請聯系易優客服咨詢:800182392 點擊咨詢
QQ在線咨詢
AI智能客服 ×