JSON API Server

建立一個可回覆 JSON 物件資料格式的 HTTP API 伺服器。請注意,由於這個模組是伺服器,除非請求方發送 DELETE / 的請求或設定錯誤時停止伺服器並遇到錯誤,否則模組會保持等待請求。

PORT

伺服器連線埠號,預設為 8080。

Stop on Error

當伺服器遇到錯誤或例外時自動停止。

options 物件

在腳本中可以直接存取 options 內建物件。options 物件中的每個 key 為工作資料夾中的一個 TXT 檔案名稱(不包含副檔名),每個 value 為該檔案的文字內容,在腳本被執行時就會自動載入所有文檔,免去於腳本中自行讀取的麻煩:

// 讀取工作資料夾中 price.txt 的值
let price = options['price']
console.log('price:', price)

input 物件

input 物件代表正要處理的 HTTP 請求,其中包含 method, path, query 以及 body 等屬性,例如請求為 GET /orders?date=2023-08-26 時,會收到 input 物件如下:

// GET /orders?date=2023-08-26 請求的 input 物件:
{
  method: 'GET',
  path: '/orders',
  query: {
    date: '2023-08-26'
  },
  body: {
  }
}

請求方可以使用 POST, PUT 等 method 並在 body 中填入 JSON 資料格式,那麼 input.body 就會是請求方帶入的 JSON 資料解析後的結果。

output 物件

output 物件代表想要回傳給請求方的 JSON 資料格式物件,可以填入符合 JSON 物件格式的內容:

// 填寫 output 物件:
output.timestamp = moment().format('YYYY/MM/DD HH:mm:ss')
output.orders = [
  {
    orderId: 1234,
    items: ['coffee', 'milk']
  }
}

模組會自動將 output 內容完整填入 HTTP 回應後送出。

api 物件

提供同步函式:api.files(), api.read(filename, encoding='utf8'), api.write(filename, text), api.remove(filename),moment.js lodash 也都是內建函式庫,可以直接使用。另外提供非同步函式 api.run(uuid) 可以執行獨立技能,但請注意前一個 api.run 結束後才能呼叫新的 api.run 否則會回傳例外。

為了支援可存續的資料,api.datastore() 這個同步函式會回傳一個物件,所有在這個物件內的資料當伺服器停止時將自動寫入工作資料夾的 datastore.json,並在下次啟動時自動載入:

// 取得 datastore 物件,伺服器會自動從工作資料夾中的 datastore.json 載入
let datastore = api.datastore()
datastore.reqNum += 1

Last updated