星期四, 19 6 月, 2025
No Result
View All Result
育心文具行

育心文具行

  • 首頁
  • 心得x體驗
  • 筆記x備忘
  • 閒談x雜記
  • 我的工具箱
  • 關於我
育心文具行
  • 首頁
  • 心得x體驗
  • 筆記x備忘
  • 閒談x雜記
  • 我的工具箱
  • 關於我
No Result
View All Result
育心文具行
Home 筆記x備忘

實作 js 函式庫包裝為 API 提供給後端呼叫

2025-02-04
in 筆記x備忘
Reading Time:3 mins read
A A
0

最近在想有滿多 js 實作資料處理的函式庫,於是想看有沒有 nodejs 或是相似的程式語言可以相容 js 實做包裝城後端,於是想到了用 Cloudflare Worker 服務來實作。

我拿 iztro 這套服務來實作,我認為很適合包裝成 API 呼叫的功能有幾個特色:

  1. 以處理、整理資料為目的的服務。
  2. 不需要相依其他套件( e.g. jQuery)
  3. 產生的結果是一包字串(json, xml 等),或是能轉成 base64 的檔案字串。

先附上 Github repo 。名字叫做「My Iztro Worker」,有夠隨便,哈。

這個服務基於 Cloudflare Worker 實作,實作以下功能:

  • API 服務:接受包含生日、出生時間、性別等參數的 HTTP GET 請求,返回相應的紫微斗數資訊。
  • 使用說明頁面:當請求缺少必要參數時,返回一個包含 API 使用說明和測試表單的 HTML 頁面,方便使用者瞭解如何使用該 API。
  • 速率限制:為了防止濫用,對每個客戶端 IP 設置了每分鐘最多 10 次請求的限制。

實作了一個 usage.js 頁面作為測試 form 表,並且使用 Worker 特有的功能實作呼叫頻率的限制;src/index.js 中可以依照原始套件的說明參考修改。

部署方式請參考請參考原始碼的 README,我作了一個線上範例,視狀況可能會停用,且用且珍惜:

iztro-cloudflare-worker/README.md at master · lazyjerry/iztro-cloudflare-worker

github.com

使用 Cloudflare Worker 服務實作 JavaScript 函式庫功能,以 iztro 為例 – lazyjerry/iztro-cloudflare-worker

我有一個夢,是把各種小服務甚至切成更小的顆粒,都做成內網獨立 api,在透過 docker 或是其他工具包起來,以後有專案的話就可以整包像撒網一樣丟出來用,視狀況調整結構和服務內容,這開發過程,可能也是一段沒飯吃的日子呀。


同場加映,請 AI 協助生成實作 nodejs 的說明:
—

將 JavaScript 函式庫包裝為 API,提供後端呼叫,是現代軟體開發中常見的需求。這種方法能夠將複雜的邏輯封裝起來,透過標準化的介面供其他應用程式或服務使用。以下是實作此項目的簡要流程:

  1. 選擇適當的執行環境: 首先,選擇一個適合執行 JavaScript 的環境。Node.js 是一個常見的選擇,因為它允許在伺服器端執行 JavaScript。此外,像 Cloudflare Workers 這樣的伺服器無關環境也提供了在邊緣節點執行 JavaScript 的能力。
  2. 建立專案結構: 為您的 API 建立一個新的專案目錄,並初始化專案:
   mkdir my-js-api
   cd my-js-api
   npm init -y

這將建立一個包含預設設定的 package.json 檔案。

  1. 安裝相依套件: 根據您的需求,安裝必要的相依套件。例如,若您需要處理 HTTP 請求,可以安裝 Express.js:
   npm install express
  1. 撰寫 API 邏輯: 在專案目錄中,建立一個主檔案(例如 index.js),並撰寫處理 HTTP 請求的邏輯。以下是一個使用 Express.js 的簡單範例:
   const express = require('express');
   const app = express();
   const port = 3000;

   // 引入您的 JavaScript 函式庫
   const myLibrary = require('./myLibrary');

   app.use(express.json());

   app.post('/api/your-endpoint', (req, res) => {
     const input = req.body.input;
     const result = myLibrary.yourFunction(input);
     res.json({ result });
   });

   app.listen(port, () => {
     console.log(`API 伺服器正在 http://localhost:${port} 上運行`);
   });

在這個範例中,我們建立了一個 POST 端點 /api/your-endpoint,接受 JSON 格式的請求,並使用 myLibrary 中的函式處理輸入。

  1. 測試 API: 在本機運行您的 API 伺服器,並使用工具(如 Postman)或命令列工具(如 curl)進行測試:
   curl -X POST http://localhost:3000/api/your-endpoint -H "Content-Type: application/json" -d '{"input": "your data"}'

確保您的 API 能夠正確處理請求並返回預期的結果。

  1. 部署 API: 根據您的需求,將 API 部署到適當的環境中。例如,您可以將其部署到雲端服務提供商(如 AWS、Heroku)或使用 Docker 容器進行部署。
  2. 實作速率限制和安全性: 為了防止濫用,建議實作速率限制機制。此外,確保您的 API 僅允許授權的請求,並實作適當的驗證和授權機制。

透過上述步驟,您可以將 JavaScript 函式庫包裝為 API,供後端系統呼叫,實現功能的模組化和重用性。

Tags: APIBackendcloudflareDevelopmentjavascriptRateLimitRESTserverlesswebworkers
Share22Tweet14
Previous Post

MacOS 上將指定資料夾內檔案繁體轉簡體

Next Post

Mac 上使用 pyenv 管理 python 環境

Related Posts

筆記x備忘

如何在網站中整合 Google reCAPTCHA v3

關於 Google reCAPTCHA ...

2024-10-22
100
筆記x備忘

使用 Cloudflare Workers 處理前端跨域問題

在 Web Application 走前...

2024-09-01
100
筆記x備忘

使用 Nginx 設定通過 Cloudflare 的真實 IP 與只允許 Cloudflare IP 來的流量。

一次講兩件事,都是和 Cloudflar...

2024-08-07
100
筆記x備忘

前端 web worker 筆記

關於前端的 JS 技術還真的是需要筆記的...

2023-10-06
100
筆記x備忘

Cloudflare Workers 服務介紹

如果有使用 cloudflare 服務,...

2022-10-17
100
心得x體驗

Docker 初體驗

最近在嘗試用 docker 建構各種環境...

2021-07-29
100
Load More
Next Post

Mac 上使用 pyenv 管理 python 環境

MacOS 添加本地伺服器的 DNS

Visual Studio Code 的 PHP CS Fixer 設定

全站搜尋

No Result
View All Result

關於我

育心文具行

Jerry Lin

程式設計師

育心文具行是一家文具店,老闆的小兒子是一個設計師,職業是設計程式,興趣是設計人,倒是還沒有實作的機會。
--
所有的相遇都不是巧合。
在廣告公司待了三年有兩年多在做內容產品,離職後繼續在內容產業走了四年多,最後選則離開台灣的公司體制在家 SOHO ,碰上了 2020 年疫情才知道原來自己這是走在時代的潮流尖端。 感謝許多老闆和貴人相助,至今目前尚能存活,在台北街頭努力著。

近期文章

  • 於 MacOS 中,整合自然語言,自動化添加行事曆事件
  • 使用 deepwiki-open 針對程式碼產生 WIKI
  • 使用 Tailwind CLI 快速建立靜態 CSS 檔的基本步驟
  • Visual Studio Code 的 PHP CS Fixer 設定
  • MacOS 添加本地伺服器的 DNS

分類

  • 心得x體驗 (45)
  • 筆記x備忘 (77)
  • 閒談x雜記 (13)

贊助買咖啡

Facebook Instagram RSS

標籤

ai android cloudflare flutter git ios javascript linode linux MAC macos mis nginx php plugin QBQ!問題背後的問題 server work sublime sublime text vps vue.js vue3 What if What If? 如果這樣,會怎樣? wordpress 前端 原則 原子習慣 團隊,從傳球開始 團隊,從傳球開始:五百年都難以超越的 UCLA 傳奇教練伍登培養優越人才和團隊的領導心法 壓力測試 外掛 如果這樣,會怎樣?:胡思亂想的搞怪趣問 正經認真的科學妙答 心得 情緒 活動心得 灰階思考 約翰‧漢尼斯 股癌 自慢10 自慢10:18項修練 記錄 謝孟恭 讀書心得 這一生,你想留下什麼?

文章分類

  • 心得x體驗 (45)
  • 筆記x備忘 (77)
  • 閒談x雜記 (13)

近期文章

  • 於 MacOS 中,整合自然語言,自動化添加行事曆事件
  • 使用 deepwiki-open 針對程式碼產生 WIKI
  • 使用 Tailwind CLI 快速建立靜態 CSS 檔的基本步驟
  • Visual Studio Code 的 PHP CS Fixer 設定
  • MacOS 添加本地伺服器的 DNS

近期留言

  • 「Bolin Lai」於〈WordPress 之中藍新金流開啟後, Elementor 外掛有時會打不開的問題處理〉發佈留言
  • 「Jerry Lin」於〈WordPress 之中藍新金流開啟後, Elementor 外掛有時會打不開的問題處理〉發佈留言
  • 「JCL」於〈WordPress 之中藍新金流開啟後, Elementor 外掛有時會打不開的問題處理〉發佈留言

文章月曆

2025 年 6 月
日 一 二 三 四 五 六
1234567
891011121314
15161718192021
22232425262728
2930  
« 5 月    

© 2020 hipster.crazyjerry.studio - a blog about experience, notes and nonsense, by Jerry Lin.

No Result
View All Result
  • 首頁
  • 心得x體驗
  • 筆記x備忘
  • 閒談x雜記
  • 我的工具箱
  • 關於我

© 2020 hipster.crazyjerry.studio - a blog about experience, notes and nonsense, by Jerry Lin.