規劃您的實作
假設您正在建立像 Salesforce 這樣的 SaaS CRM 平台。您希望讓您的客戶能夠編寫 JavaScript 程式碼,以便在每次捕獲新潛在客戶時執行。
如果您打算使用 Deno Deploy 實作此功能,以下是您可能思考如何建構它的方式
- 建立一個專案,並將該專案與您資料庫中的客戶帳戶關聯。這將允許您追蹤每個客戶產生的用量,並可能使用關於專案的分析資訊向他們收取費用。
- 建立一個部署,其中包含您的終端使用者提供的程式碼,該程式碼應在新潛在客戶建立時執行。
- 在同一個專案中使用多個部署,您可以實作事件處理邏輯的「預備」或「生產」版本。
- 您的 CRM 軟體將透過向部署發送 HTTP 請求並等待回應,與您的終端使用者的程式碼進行通訊。
- 未來,如果您想支援為 CRM 中的其他事件編寫程式碼(例如建立新聯絡人,或每晚發送自動報告),您可以為每個事件建立一個專案,並為每個事件使用如上所述的流程。
讓我們看看實現此目的所需的 API 端點範例。
為專案建立部署 Jump to heading
在前一章中,您建立了一個新專案並記下了其 id
屬性。在前一章的範例中,ID 是
f084712a-b23b-4aba-accc-3c2de0bfa26a
您可以使用專案識別符來為該專案建立部署。建立一個名為 create_deployment.ts
的新檔案,並包含以下程式碼,以為您的專案建立一個新的「hello world」部署。
create_deployment.ts
const accessToken = Deno.env.get("DEPLOY_ACCESS_TOKEN");
const API = "https://api.deno.com/v1";
// Replace with your desired project ID
const projectId = "your-project-id-here";
// Create a new deployment
const res = await fetch(`${API}/projects/${projectId}/deployments`, {
method: "POST",
headers: {
Authorization: `Bearer ${accessToken}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
entryPointUrl: "main.ts",
assets: {
"main.ts": {
"kind": "file",
"content":
`export default { async fetch(req) { return new Response("Hello, World!"); } }`,
"encoding": "utf-8",
},
},
envVars: {},
}),
});
const deployment = await res.json();
console.log(res.status);
console.log(
"Visit your site here:",
`https://${project.name}-${deployment.id}.deno.dev`,
);
如果您使用以下命令執行此腳本
deno run -A --env create_deployment.ts
您很快就會在公開 URL 上擁有一個簡單的「Hello World!」伺服器,可從您的 Deno Deploy 儀表板中看到。
部署的組成部分 Jump to heading
上面的範例展示了一個非常簡單的部署範例。更複雜的部署可能包含以下部分或全部組件,完整描述請見此處的 API 文件。
- Assets(資產): TypeScript 或 JavaScript 原始碼檔案、圖像、JSON 文件 - 使您的部署運行的程式碼和靜態檔案。這些檔案可以使用
utf-8
(對於純原始碼檔案)或base64
(對於圖像和其他文字檔案)編碼在您上傳到伺服器的 JSON 中。除了實際檔案之外,您還可以包含指向其他檔案的符號連結。 - Entry point URL(進入點 URL): 指向上述集合中資產(TypeScript 或 JavaScript 檔案)的檔案路徑,該資產應被執行以啟動部署中的伺服器。
- Environment variables(環境變數): 您可以指定應存在於系統環境中的值,以便由
Deno.env.get
檢索。 - Database ID(資料庫 ID): 應提供給此部署的 Deno KV 資料庫的識別符。
- Compiler options(編譯器選項): 應該用於解釋 TypeScript 程式碼的一組選項。
自訂網域 Jump to heading
建立部署後,會分配一個產生的 URL。對於某些情況來說,這可能還可以,但通常您也會希望將自訂網域與您的部署關聯起來。請查看網域的 API 參考。