在雲開發的使用過程當中,有很多的用戶會提出本身的疑問,我如何才能在本身的雲開發應用中加入一個回調地址?javascript
在實際開發過程當中,很多涉及到支付、訂單等異步操做的場景,會須要提供一個回調 URL,以確保在用戶完成本身的支付過程後,由支付服務器對回調的 URL 發起請求,確認調用成功。所以,很多用戶在使用時提出了本身的疑問,應該如何實現這樣的功能?java
因爲目前雲開發雲函數還沒有對外提供 HTTP 調用的能力,所以,咱們能夠藉助騰訊雲提供的雲函數和 API 網關,來實現相似的功能。數據庫
在進行調用時開發者所設置的回調地址是一個 API 網關的地址,微信支付等服務的服務器在完成操做之後,會執行 HTTP 請求,請求 API 網關。 API 網關對應的是騰訊云云函數,咱們能夠在騰訊云云函數中調用雲開發的 SDK,或者是雲開發的 HTTP API,完成對雲開發數據庫的操做。npm
訪問 console.cloud.tencent.com/ ,使用你的騰訊雲帳號登錄,在頂部菜單欄中找到「雲產品」— 「Serverless」—「雲函數」json
在雲函數中,選擇「函數服務」,並在函數服務頁面點擊「新建」小程序
建立一個新的雲函數,其中函數名稱根據你的須要填寫api
運行環境選擇 Node.js 8.9,建立方式選擇空白函數,完成後點擊下一步。瀏覽器
在下一頁不須要作修改,直接點擊完成。bash
在建立完成雲函數之後,咱們會進入到這樣的界面,在這個界面中選擇「觸發方式」服務器
在觸發方式頁面新增一個觸發方式,使用 「API 網關觸發」,請求方法選擇「ANY」,發佈環境選擇「發佈」,鑑權方法選擇「免鑑權」。
填寫完成後,點擊保存,而後你會得到一個地址,這個地址就是你後續的回調地址。
你能夠將這個地址在瀏覽器中打開,能夠看到這樣的數據
則說明咱們的雲函數完成了配置。
當咱們完成了雲函數的配置之後,接下來咱們能夠修改雲函數,使其完成咱們本身想要的功能。
咱們但願雲函數能夠從外部發來的請求中獲取到參數,並藉助雲開發提供的 API,對雲開發數據庫中的數據進行更新。則咱們能夠這樣操做
咱們在本地新建一個目錄,並在其中執行以下命令(須要你提早安裝了 N ode.js 環境)
cd 新建文件夾
npm init -y
npm install -y got
複製代碼
而後建立一個文件index.js
,並在其中加入以下代碼,並設置其中的 APPID、SECRET、ENV_ID 等字段。
'use strict';
const got = require('got');
const APPID = ''; // 小程序 APPID
const SECRET = ''; // 小程序 Secret
const ENV_ID = ''
const TOKEN_URL = `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${APPID}&secret=${SECRET}`
const QUERY_URL = 'https://api.weixin.qq.com/tcb/databasecollectionget?access_token='
exports.main_handler = async (event, context, callback) => {
// 1. 提取參數 能夠從 URL?id=1&status=2 中提取出 1 和 2
const id = event.queryString.id;
const status = event.queryString.status;
// 2. 獲取 Token,用於後續的調用
let token_resp = await got(TOKEN_URL);
let token = JSON.parse(token_resp.body).access_token
const url = QUERY_URL + token;
// 執行雲開發命令
let result = await got(url, {
method: 'POST',
json: true,
headers: {
'content-type': 'applicaiton/json',
'accept-encoding':'gzip'
},
body: {
"env": ENV_ID
}
})
return result.body
};
複製代碼
配置完成後,保存文件。
打包完成後,從新訪問騰訊雲控制檯,找到剛剛建立的雲函數,進入到「函數代碼」中,選擇其中的「本地上傳文件夾」,選擇你剛剛建立的文件夾,等待其自動壓縮完成後,點擊保存上傳。
上傳完成後,會自動進行部署。
你能夠從新訪問剛剛生成的 API 網關地址,並在其後加入 id 和 status 參數,好比個人最後的地址是 https://service-51pn7koc-1251337088.gz.apigw.tencentcs.com/release/myFunction?id=1&status=2
訪問之後,獲得的結果是這樣的
這樣就說明我成功的從雲函數中訪問了雲數據庫,而且經過一個無需鑑權的 API 地址獲取到了信息。
實際上,藉助於 API 網關、雲函數以及雲開發的 API & SDK,你能夠實現很是多的功能,能不能實現,就看你的想象力有沒有達到啦。