在本页

简单 API 服务器

Deno 非常适合创建简单、轻量级的 API 服务器。本教程将介绍如何使用 Deno Deploy 创建和部署一个 API 服务器。

创建本地 API 服务器 跳转到标题

在您的终端中,创建一个名为 server.ts 的文件。

touch server.ts

我们将使用 Deno KV 数据库 实现一个简单的链接缩短服务。

server.ts
const kv = await Deno.openKv();

Deno.serve(async (request: Request) => {
  // Create short links
  if (request.method == "POST") {
    const body = await request.text();
    const { slug, url } = JSON.parse(body);
    const result = await kv.set(["links", slug], url);
    return new Response(JSON.stringify(result));
  }

  // Redirect short links
  const slug = request.url.split("/").pop() || "";
  const url = (await kv.get(["links", slug])).value as string;
  if (url) {
    return Response.redirect(url, 301);
  } else {
    const m = !slug ? "Please provide a slug." : `Slug "${slug}" not found`;
    return new Response(m, { status: 404 });
  }
});

您可以使用以下命令在您的机器上运行此服务器

deno run -A --unstable-kv server.ts

此服务器将响应 HTTP GETPOST 请求。POST 处理程序期望在请求主体中接收一个 JSON 文档,其中包含 slugurl 属性。slug 是短 URL 组件,url 是您要重定向到的完整 URL。

以下是如何使用 cURL 与此 API 端点交互的示例

curl --header "Content-Type: application/json" \
  --request POST \
  --data '{"url":"http://docs.deno.org.cn/runtime/manual","slug":"denodocs"}' \
  http://localhost:8000/

作为响应,服务器应向您发送包含 KV 数据的 JSON,表示 set 操作的结果

{ "ok": true, "versionstamp": "00000000000000060000" }

对我们服务器的 GET 请求将以 URL slug 作为路径参数,并重定向到提供的 URL。您可以在浏览器中访问此 URL,或发出另一个 cURL 请求以查看此操作!

curl -v http://localhost:8000/denodocs

现在我们已经有了 API 服务器,让我们把它推送到一个 GitHub 仓库,我们稍后会将其链接到 Deno Deploy。

为您的应用程序创建一个 GitHub 仓库 跳转到标题

登录 GitHub创建一个新的仓库。现在您可以跳过添加 README 或任何其他文件 - 一个空白仓库对于我们的目的来说就足够了。

在您创建 API 服务器的文件夹中,使用以下命令按顺序初始化一个本地 git 仓库。请务必将 your_usernameyour_repo_name 替换为相应的的值。

echo "# My Deno Link Shortener" >> README.md
git init
git add .
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/your_username/your_repo_name.git
git push -u origin main

您现在应该有一个包含 server.ts 文件的 GitHub 仓库,就像 这个示例仓库 一样。现在您已准备好将此应用程序导入并运行到 Deno Deploy 上。

导入并部署您的项目 跳转到标题

接下来,在 Deno Deploy 上注册一个帐户,并 创建一个新项目。连接您的 GitHub 帐户并选择我们刚才创建的仓库。

Deno Deploy project selection

配置应该看起来像这样

Deno Deploy config

点击“部署项目”按钮。部署完成后,您的链接缩短服务将在 Deno Deploy 上上线!

Deno Deploy dashboard

无需任何额外的配置(Deno KV 在 Deploy 上直接可用),您的应用程序应该与在本地机器上运行时一样。

您可以使用 POST 处理程序添加新的链接,就像您之前做的那样。只需将 localhost URL 替换为 Deno Deploy 上的实时生产 URL

curl --header "Content-Type: application/json" \
  --request POST \
  --data '{"url":"http://docs.deno.org.cn/runtime/manual","slug":"denodocs"}' \
  https://your-deno-project-url-here.deno.dev/

同样,您可以在浏览器中访问您的缩短 URL,或者使用 cURL 命令查看返回的重定向

curl -v https://your-deno-project-url-here.deno.dev/denodocs

如果您喜欢这个项目,接下来您可以查看更高级的 Web 框架,例如 Fresh,或者了解有关 Deno KV 的更多信息。恭喜您成功部署了简单的 API 服务器!