跳到主要内容
Supabase Functions on Deno Deploy

Deno Deploy 上的 Supabase 函数

我们很高兴地宣布与 Supabase 建立合作伙伴关系,共同发布他们的新产品 Supabase Functions,该产品允许您在几秒钟内在边缘全球部署代码。它构建于我们的 Deno Deploy 基础设施之上,默认包含自动缩放和自动缓存,因此您可以减少对基础设施的关注,而将更多精力放在构建产品上。

借助 Deno,Supabase Functions 获得了 первоклассный TypeScript 支持、ESM 风格的导入、开箱即用的安全性以及对现代 Web API 的支持。

如果您之前没有听说过 Supabase,它是一个开源的 Firebase 替代方案,提供后端服务来创建和部署网站、服务和应用程序。新的 Functions 产品加入了一系列令人印象深刻的托管解决方案,包括 数据库存储用户管理系统

让我们来看看如何开始使用。

Supabase 函数与 Supabase

开始使用 Supabase 函数只需几分钟。

安装和设置 Supabase CLI

在 Mac 上,您可以使用 homebrew

$ brew install supabase/tap/supabase

请参阅其他安装说明。

通过获取访问令牌此处并将其粘贴到此命令后出现的提示符中,登录您的 Supabase CLI

$ supabase login

创建 Supabase 函数

您可以使用子命令 functions 创建函数

$ supabase functions new hello

这将创建一个函数存根 supabase/functions/hello/index.ts,它看起来像这样

import { serve } from "https://deno.land/[email protected]/http/server.ts";

console.log("Hello from Functions!");

serve(async (req) => {
  const { name } = await req.json();
  const data = {
    message: `Hello ${name}!`,
  };

  return new Response(
    JSON.stringify(data),
    { headers: { "Content-Type": "application/json" } },
  );
});

在本地执行函数

首先,启动 Docker,然后启动 Supabase 堆栈

$ supabase start
Started local development setup.

         API URL: https://127.0.0.1:54321
          DB URL: postgresql://postgres:postgres@localhost:54322/postgres
      Studio URL: https://127.0.0.1:54323
    Inbucket URL: https://127.0.0.1:54324
        anon key: eyxxxxx
service_role key: eyzzzzz

获取 anon key,因为我们需要在标头中传递它以调用该函数。

接下来,启动函数监视器

$ supabase functions serve hello

请注意,supabase function serve 具有热重载功能。如果您的文件有任何更改,它将重新启动 Deno 服务器。

一旦函数在本地提供服务,您可以使用 curl 执行它。将 ANON_KEY 替换为 supabase start 输出中的 anon 密钥。

$ curl --location --request POST 'https://127.0.0.1:54321/functions/v1/' \
    --header 'Authorization: Bearer ANON_KEY' \
    --header 'Content-Type: application/json' \
    --data '{"name":"Functions"}'

您应该收到响应 {"message":"Hello Functions!"}

部署函数

您可以直接从 CLI 部署函数。首先,您必须链接一个 Supabase 项目。前往 supabase.com 并创建一个项目。

您的 Supabase 项目应该具有类似 https://app.supabase.io/project/xyzabcxxxxxx 的 URL 结构。/project/ 之后的字母是项目的 ref,您必须在下面的命令中提供它

$ supabase link --ref xyzabcxxxxxx
Finished supabase link.

然后,部署就像这样简单

$ supabase functions deploy hello
Bundling supabase/functions/hello
Deployed Function hello on project xyzabcxxxxxx.

最后,在生产环境中执行该函数。请注意,此处的 ANON_KEY 应位于您在 Supabase 网站上的项目设置中。

curl --location --request POST 'https://PROJECT_REF.supabase.co/functions/' \
  --header 'Authorization: Bearer ANON_KEY' \
  --header 'Content-Type: application/json' \
  --data '{"name": "Functions"}'

您应该收到响应 {"message":"Hello Functions!"}

有关更多信息,请参阅 Supabase 的文档

下一步是什么?

我们大力倡导使 Web 开发尽可能简单和愉快,并使 Supabase 开发人员能够通过使用 Deno Deploy 全球部署的边缘函数来增强他们的应用程序,这是朝着这个方向迈出的一步。随着越来越多的开发人员使用 Deno 和 Deno Deploy,这将帮助我们改进,以便您可以继续拥有为用户构建和部署产品的最佳体验。

想要为您的用户提供快速、简单且全球化的边缘部署?请发送电子邮件至 [email protected] 联系我们。