deno.com
本页内容

Subhosting 快速入门

正在寻找展示如何将代码部署到 Deno 的隔离云的最小示例?我们为您提供了以下内容,或者您可以跳到更详细的入门指南

// 1.) Get API access info ready
const accessToken = Deno.env.get("DEPLOY_ACCESS_TOKEN");
const orgId = Deno.env.get("DEPLOY_ORG_ID");
const API = "https://api.deno.com/v1";
const headers = {
  Authorization: `Bearer ${accessToken}`,
  "Content-Type": "application/json",
};

// 2.) Create a new project
const pr = await fetch(`${API}/organizations/${orgId}/projects`, {
  method: "POST",
  headers,
  body: JSON.stringify({
    name: null, // randomly generates project name
  }),
});

const project = await pr.json();

// 3.) Deploy a "hello world" server to the new project
const dr = await fetch(`${API}/projects/${project.id}/deployments`, {
  method: "POST",
  headers,
  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 dr.json();

console.log(dr.status);
console.log(
  "Visit your site here:",
  `https://${project.name}-${deployment.id}.deno.dev`,
);

Subhosting 入门 跳转到标题

要开始使用 subhosting,您需要在 Deno Deploy 仪表板中创建一个组织。按照屏幕上的说明为 subhosting 创建一个新组织。

在完成 onboarding 流程后,您很可能还会生成一个 访问令牌,您将使用它来访问 REST API。如果您没有这样做(或者您的令牌已过期),您可以在此处生成一个新的令牌

将您的令牌保存在安全的地方

一旦您生成访问令牌,它将不会再次在 Deploy 仪表板 UI 中显示。请确保将此令牌存储在安全的地方。

设置测试环境 跳转到标题

在接下来的教程页面中,我们将假设您通过 Deno 脚本(TypeScript 代码)与 Deploy REST API 交互,并将展示以这种方式与 API 交互的示例。但是,此处显示的技术也适用于任何其他能够执行 HTTP 请求的环境。

此处和未来章节中显示的代码示例假设您已安装 Deno 1.38 或更高版本

当使用 REST API 时,将身份验证凭据存储在系统环境中很有用,以防止您意外地将其签入到源代码控制中。

在本教程中,我们将使用 Deno 1.38 中引入的新 --env 标志来管理环境变量。在您的本地计算机上,创建一个新目录来存储我们的管理脚本,并创建三个文件

  • .env - 用于保存我们的 API 访问信息
  • .gitignore - 用于忽略我们的 .env 文件,这样我们就不会错误地将其放入源代码控制中
  • create_project.ts - 我们稍后将使用的文件,用于向 REST API 发出我们的第一个请求

配置 .env 文件和 .gitignore 文件 跳转到标题

首先,将您的 访问令牌和组织 ID 存储在您之前创建的 .env 文件中。

.env
DEPLOY_ACCESS_TOKEN=your_token_here
DEPLOY_ORG_ID=your_org_id_here

将文件中的值替换为您自己的 Deploy 帐户中的值。

接下来,创建一个 .gitignore 文件,以确保我们不会意外地将我们的 .env 文件签入到源代码控制中

.gitignore
# Ignore this file in git
.env

# Optional: ignore this junk file often generated on mac OS
.DS_Store

现在我们已经设置了凭据,让我们编写一些代码来访问 REST API。

创建您的第一个项目 跳转到标题

为了使用 subhosting 或 REST API 做任何有趣的事情,我们需要创建一个项目。将以下代码复制到一个名为 create_project.ts 的文件中,该文件与您的 .env.gitignore 文件位于同一文件中。

create_project.ts
const accessToken = Deno.env.get("DEPLOY_ACCESS_TOKEN");
const orgId = Deno.env.get("DEPLOY_ORG_ID");
const API = "https://api.deno.com/v1";

// Create a new project
const res = await fetch(`${API}/organizations/${orgId}/projects`, {
  method: "POST",
  headers: {
    Authorization: `Bearer ${accessToken}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    name: null, // randomly generates project name
  }),
});

const project = await res.json();
console.log(project);

在终端中使用以下命令执行此代码

deno run -A --env create_project.ts

如果一切按计划进行,您应该看到类似如下的输出

{
  id: "f084712a-b23b-4aba-accc-3c2de0bfa26a",
  name: "strong-fox-44",
  createdAt: "2023-11-07T01:01:14.078730Z",
  updatedAt: "2023-11-07T01:01:14.078730Z"
}

请注意此响应返回的项目 id - 这是我们将在下一步中使用的项目 ID。

现在我们已经配置了 REST API 访问并设置了一个项目,我们可以继续创建我们的第一个部署

您找到所需的信息了吗?

隐私政策