天天看點

Basement 後端雲服務正式亮相雲栖大會!小螞蟻說: Serverless 與前端使用 Basement 後端雲服務快速打造小程式代碼示例雲函數資料存儲檔案存儲

小螞蟻說:

在今天下午的雲栖 ATEC 大會上,Basement 後端雲服務正式對外開放!首先服務支付寶小程式場景,提供貼身服務。為了促進支付寶小程式更好發展,螞蟻金服還将重磅投入了一億元雲基金,給到包含 Basement 後端雲服務在内的一站式小程式雲計劃。

Basement 後端雲服務正式亮相雲栖大會!小螞蟻說: Serverless 與前端使用 Basement 後端雲服務快速打造小程式代碼示例雲函數資料存儲檔案存儲

Serverless 與前端

作為前端,當我們要開發一個新應用時,可能隻要很短時間就可以搞定前端,但涉及服務端,卻因為要關注伺服器、資料庫、檔案存儲、域名備案等等,需要耗費大量精力。

使用 Serverless 服務無疑是解決這個問題很合适的方式,它天然為前端而生,近幾年 AWS、Google Cloud 等雲廠商中都在大幅推廣。什麼是 Serverless?在 Martin Fowler 觀點裡,包含 BaaS(Backend as a Service)、FaaS(Functions as a Service)兩部分,尤其随着容器化技術日漸成熟,越來越多原先的 BaaS 平台開始補足自己的函數計算能力,讓使用者可以更加完整的建構應用。

有了 Serverless 服務,我們不再需要關心服務端運維,在用戶端即可完成資料存儲、檔案存儲調用,通過雲函數便能搞定服務端代碼、異步處理邏輯等。這些服務一般都是按使用量計費,可自動彈性擴容,非常适合初創型産品,大幅降低投入成本。

使用 Basement 後端雲服務快速打造小程式

Basement 後端雲就是這樣一個 Serverless 服務,誕生于螞蟻體驗科技,底層依托于螞蟻強大穩定的金融科技平台,在過去幾年裡,一直服務内部 web 開發者們。在今天下午的雲栖 ATEC 大會上,Basement 後端雲服務正式對外開放,首先服務支付寶小程式場景,提供貼身服務。支付寶小程式事業部負責人何勇明還現場宣布将為一站式小程式雲計劃投入了一億元雲基金,此計劃包含Basement 後端雲服務、雲端應用開發等。”

代碼示例

Talk is cheap, show me the code.

Basement 擁有下面這些特色能力,尤其在雲函數裡可直接調用支付寶開放平台接口,非常友善。

下面,我們通過具體的代碼示例讓大家來快速了解幾大重點能力。

雲函數

雲函數支援使用 Node.js 進行開發,大家可通過小程式 IDE 将代碼送出到雲端,然後在用戶端使用 Basement 提供的 API 進行調用,開發者還可以在雲函數中直接通過 API 調用資料存儲和檔案存儲的服務資源。

搭配支付寶小程式使用雲函數,免配置操作,可以直接調用支付寶開放平台的海量 OpenAPI 接口。

exports.create = async (ctx) => {

// @see https://docs.open.alipay.com/api_2/alipay.user.info.share

// 通過 OpenAPI 擷取使用者資訊

const userInfo = await ctx.basement.openapi.alipay.exec('alipay.user.info.share');

// @see https://docs.open.alipay.com/api_1/alipay.trade.create

// 通過 OpenAPI 建立訂單

const order = await ctx.basement.openapi.alipay.exec('alipay.trade.create', {

outTradeNo: `${Date.now()}${userInfo.userId}`, // 外部流水号,需要保證唯一性

buyerId: userInfo.userId, // 付款使用者的 userId

totalAmount: ctx.args.amount, // 金額

subject: ctx.args.subject, // 描述

});

// 傳回支付結果

return { order };};
      

資料存儲

資料存儲服務是基于 MongoDB 托管在雲端的資料庫,資料以 JSON 格式存儲。大家可以在用戶端(如支付寶小程式)内直接操作資料,也可以在雲函數中讀寫資料。

在小程式用戶端代碼裡,我們可以通過 basement.db 對象調用資料存儲的大量 API 方法。比如:我們要獲得目前存儲的所有集合名詞清單。

basement.db.collections().then((res) => {

this.setData({ collectionNames: res.result });}).catch(console.error);
      

雲函數内則可直接調用(不需要安裝 SDK)同一個雲服務的資料存儲服務。下面是一個雲函數調用的例子,同樣是獲得所有集合名稱的清單。

module.exports = async (ctx) => {

const res = await ctx.basement.db.collections();

return res.result;};
      

檔案存儲

檔案存儲服務支援文本、圖檔等内容存儲到雲端後,可通過高速 CDN 通路。同樣也是可在用戶端直接上傳,或雲函數裡直接上傳和讀取檔案,目前主要支援圖檔作為檔案上傳。

在用戶端,我們可以通過 basement.file 對象調用檔案存儲的大量 API 方法。比如:我們将小程式用戶端中選中的圖檔進行上傳,獲得圖檔 URL。

// 選擇并上傳圖檔,獲得圖檔 URLattach() {

my.chooseImage({

chooseImage: 1,

success: res => {

const path = res.apFilePaths[0];

const options = {

filePath: path,

headers: {

contentDisposition: 'attachment',

},

};

basement.file.uploadFile(options).then((image) => {

console.log(image);

this.setData({

imageUrl: image.fileUrl,

});

}).catch(console.log);

},

});},
      

雲函數可直接調用(不需要安裝 SDK)同一個雲服務的檔案存儲服務。下面是一個雲函數調用的例子,将上述用戶端中上傳的圖檔删除掉。

module.exports = async (ctx) => { // ctx.args 是從用戶端傳過來的參數

const res = await ctx.basement.file.deleteFile({ fileUrl: ctx.args.fileUrl });

return res;};
      

為了讓大家能夠近距離體驗到 Basement,在 9.19-9.21 雲栖大會 ATEC 展館裡舉辦了小程式雲+端挑戰賽,以及集訓營,在這可以近距離接觸到 Basement 後端雲開發團隊。因極簡的開發模式,昨天現場一位 11 歲小朋友,都輕松上手,赢得比賽鼓勵獎:)

無法到現場的同學,我們還提供了線上示例(請複制連結至浏覽器打開):

https://tech.antfin.com/codelabs/eouxrp

目前 Basement 尚在公測期,采用邀請制,有興趣可以打開下方連結申請公測資格哦:

http://render.46mlsv.com/p/f/fd-jmadfkyf/pages/home/index.html

— END —

螞蟻金服官方唯一對外技術傳播管道

投稿郵箱:[email protected]

歡迎留言及個人轉發,媒體轉載請聯系授權

繼續閱讀