iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 14
0

今天要來設定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_tokenreq.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);
  }
});
  1. 建立PostBucketsPayload()
  2. 傳入bucketKey,以我們的forge app client ID,加上從前端表單解析得來的名稱,透過req.body.bucktKey獲得,來組成
  3. 透過BucketsApi這個物件中的createBucket函式,傳入先前取得的設定好的oauth_client與oauth_token,以await放在前綴確保其執行完畢

上一篇
Day13 - 上傳模型(2)
系列文
讓模型上雲 - Autodesk Forge API 學習筆記12
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言