deno.com
本頁內容

規劃您的實作

假設您正在建立像 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 參考

您找到需要的資訊了嗎?

隱私權政策