Python 作為小程式後端的三種方法
你好,我是徵哥。微信的小程式是一個很不錯的體驗,簡單,上手快,這幾天也在學習使用小程式,自己總結了三種用 Python 作為小程式後端的方式,供你參考。
方法一、微信的雲託管[1]。
優點:不需要購買伺服器,不需要域名備案,按使用量計費,DevOps 自動化,安全鑑權,適合沒有運維經驗的人。
缺點:費用這塊,肯定是比自建伺服器費用略高的。就像同一車型,自動擋的車比手動擋的車更貴一樣。
所謂雲託管,就是一個 Docker 容器,你只需要弄一個倉庫,可以 github, gitlab, gitee 中的任意一個建立倉庫,寫好 Dockerfile,上傳到雲託管,雲託管會自動構建容器映象並執行,執行容器的方式都是可以自定義的。部署完成後,我們會得到一個預設域名地址,就是服務對外提供服務的入口,你可以將其按照正常的服務來呼叫訪問,也可以繫結自己的域名。
小程式中,可以這樣訪問容器服務:
// 確認已經在 onLaunch 中呼叫過 wx.cloud.init 初始化環境(任意環境均可,可以填空) const res = await wx.cloud.callContainer({ config: { env: '填入雲環境ID', // 微信雲託管的環境ID }, path: '/xxx', // 填入業務自定義路徑和引數,根目錄,就是 / method: 'POST', // 按照自己的業務開發,選擇對應的方法 header: { 'X-WX-SERVICE': 'xxx', // xxx中填入服務名稱(微信雲託管 - 服務管理 - 服務列表 - 服務名稱),在上述實踐中是 demo } // 其餘引數同 wx.request }); console.log(res);
有了容器,後端用什麼程式語言都是可以的,就看自己擅長啥了, Python 絕對沒問題,而且官方有 Django 模版,一鍵部署。
方法二、微信的雲函式中轉[2]
優點:不需要域名備案,有一定的免費額度。
缺點:自己配置伺服器 。
所謂雲函式,就是執行在騰訊雲端的 Node.js 函式,只有計算邏輯,可以無縫訪問雲資料庫進行資料存取。
小程式端這樣呼叫雲函式:
wx.cloud.callFunction({ // 要呼叫的雲函式名稱 name: 'dailyexam', // 傳遞給雲函式的event引數 data: { x: 1, y: 2, } }).then(res => { // output: res.result === 3 }).catch(err => { // handle error })
Node.js 函式其實就是非同步的 javascript 函式,在雲函式裡面,我們可以請求自建伺服器上的服務,這樣域名就不需要備案了,比如下面的程式碼中,域名 somenzz.cn 是沒有備案的。
雲函式端這樣呼叫自建 API 服務:
免費額度通常很少,資料庫日讀取次數不能超過 500,寫次數不能超過 300。
因為自建服務,自然可以用 Python 開發。
方法三:自建伺服器,備案域名
優點:省錢,訪問量越大越省錢。
缺點:需要備案域名。
不使用雲函式和雲託管,那就只能在小程式端使用 wx.request 函式來請求自建服務:
wx.request({ url: 'example.php', //僅為示例,並非真實的介面地址 data: { x: '', y: '' }, header: { 'content-type': 'application/json' // 預設值 }, success (res) { console.log(res.data) } })
而 wx.request 函式有使用限制,如下:
通常你需要國內的伺服器,然後備案域名,而備案,通常會勸退很大一部分開發者。
因為自建伺服器,當然可以用 Python 開發啦。
參考資料
[1]微信的雲託管: http://cloud.weixin.qq.com/cloudrun?utm_source=idecloudconsole
[2]微信的雲函式中轉: http://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/capabilities.html#雲函式
- Spring中實現非同步呼叫的方式有哪些?
- 帶引數的全型別 Python 裝飾器
- 整理了幾個Python正則表示式,拿走就能用!
- SOLID:開閉原則Go程式碼實戰
- React中如何引入CSS呢
- 一個新視角:前端框架們都卷錯方向了?
- 編碼中的Adapter,不僅是一種設計模式,更是一種架構理念與解決方案
- 手寫程式語言-遞迴函式是如何實現的?
- 一文搞懂模糊匹配:定義、過程與技術
- 新來個阿里 P7,僅花 2 小時,做出一個多執行緒永動任務,看完直接跪了
- Puzzlescript,一種開發H5益智遊戲的引擎
- @Autowired和@Resource到底什麼區別,你明白了嗎?
- CSS transition 小技巧!如何保留 hover 的狀態?
- React如此受歡迎離不開這4個主要原則
- LeCun再炮轟Marcus: 他是心理學家,不是搞AI的
- Java保證執行緒安全的方式有哪些?
- 19個殺手級 JavaScript 單行程式碼,讓你看起來像專業人士
- Python 的"self"引數是什麼?
- 別整一坨 CSS 程式碼了,試試這幾個實用函式
- 再有人問你什麼是MVCC,就把這篇文章發給他!