简单的 API 服务器
Deno 非常适合创建简单、轻量级的 API 服务器。 学习如何使用 Deno Deploy 创建和部署一个,在本教程中。
创建一个本地 API 服务器 跳转到标题
在你的终端中,创建一个名为 server.ts
的文件。
touch server.ts
我们将使用 Deno KV 数据库来实现一个简单的链接缩短服务。
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 GET
和 POST
请求。POST
处理程序期望在请求正文中接收一个 JSON 文档,其中包含 slug
和 url
属性。slug
是短 URL 组件,url
是你想重定向到的完整 URL。
这是一个使用 cURL 调用此 API 端点的示例
curl --header "Content-Type: application/json" \
--request POST \
--data '{"url":"https://docs.deno.org.cn/runtime/manual","slug":"denodocs"}' \
https://127.0.0.1:8000/
作为响应,服务器应向你发送 JSON,其中包含 KV 数据,表示 set
操作的结果
{ "ok": true, "versionstamp": "00000000000000060000" }
对我们服务器的 GET
请求将采用 URL slug 作为路径参数,并重定向到提供的 URL。你可以在浏览器中访问此 URL,或进行另一个 cURL 请求以查看实际效果!
curl -v https://127.0.0.1:8000/denodocs
现在我们有了一个 API 服务器,让我们把它推送到 GitHub 仓库,稍后我们将链接到 Deno Deploy。
为你的应用创建一个 GitHub 仓库 跳转到标题
登录 GitHub 并 创建一个新仓库。现在你可以跳过添加 README 或任何其他文件 - 一个空白仓库对于我们的目的来说就足够了。
在你创建 API 服务器的文件夹中,按顺序使用以下命令初始化一个本地 git 仓库。请务必将 your_username
和 your_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
现在你应该有一个 GitHub 仓库,其中包含你的 server.ts
文件,如 此示例仓库 中所示。现在你已准备好在 Deno Deploy 上导入和运行此应用程序。
导入并部署你的项目 跳转到标题
接下来,注册一个 Deno Deploy 帐户并 创建一个新项目。连接你的 GitHub 帐户并选择我们刚才创建的仓库。
配置应如下所示
单击“部署项目”按钮。部署完成后,你的链接缩短服务将在 Deno Deploy 上上线!
测试你的新链接缩短器 跳转到标题
无需任何额外配置(Deno KV 在 Deploy 上开箱即用),你的应用应该像在本地机器上一样运行。
你可以像以前一样使用 POST
处理程序添加新链接。只需将 localhost
URL 替换为你在 Deno Deploy 上的实时生产 URL
curl --header "Content-Type: application/json" \
--request POST \
--data '{"url":"https://docs.deno.org.cn/runtime/","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 服务器,干得漂亮!