今天要來設定create buckets這條路由,經由昨天建立好的檔案,會是以下的狀態
const fs = require('fs');
const express = require('express');
const multer = require('multer');
const { BucketsApi, ObjectsApi, PostBucketsPayload } = require('forge-apis');
const { getClient, getInternalToken } = require('./common/oauth');
const config = require('../config');
// add routes and middleware
module.exports = router;
將在module.exports = router;
設定路由,首先我們先設定獲取token的middleware,讓後續的所有request都先經過這個設定
router.use(async (req, res, next) => {
const token = await getInternalToken();
req.oauth_token = token;
req.oauth_client = getClient();
next();
});
獲取token的方法已被我們在先前設定的oauth檔包裝好,現在只要呼叫它,就可以取得,這邊要注意的是,傳入的方法都是非同步函式,我們透過await讓getInternalToken()這個方法執行完後獲得結果,才繼續往下執行。之後我們將token與client存入req,透過next交接給下一個request,如此一來,下一個reqest就可以透過呼叫req.oauth_token
與req.oauth_client
獲取這個middleware回傳的內容。
接下來,就要開始正式實作與bucket有關的路由了,今天會建立創建bucket的路由如下
router.post('/buckets', async (req, res, next) => {
let payload = new PostBucketsPayload();
payload.bucketKey = config.credentials.client_id.toLowerCase() + '-' + req.body.bucketKey;
try {
await new BucketsApi().createBucket(payload, {}, req.oauth_client, req.oauth_token);
res.status(200).end();
} catch (err) {
next(err);
}
});
PostBucketsPayload()