边缘函数

本地开发边缘函数

在本地机器上开始使用边缘函数。


让我们在本地机器上创建一个基础的边缘函数,然后使用 Supabase CLI 调用它。

初始化项目

在本地机器上的文件夹中创建一个新的 Supabase 项目:

1
supabase init

创建边缘函数

让我们在项目中创建一个名为 hello-world 的新边缘函数:

1
supabase functions new hello-world

这会在您的 supabase 文件夹中创建函数模板:

1
2
3
4
5
└── supabase ├── functions └── hello-world └── index.ts ## 您的函数代码 └── config.toml

如何编写代码

生成的函数使用原生 Deno.serve 来处理请求。您可以访问 RequestResponse 对象。

以下是生成的 Hello World 边缘函数,它接收 Request 中的名称并返回问候语:

1
2
3
4
5
6
7
8
Deno.serve(async (req) => { const { name } = await req.json() const data = { message: `Hello ${name}!`, } return new Response(JSON.stringify(data), { headers: { 'Content-Type': 'application/json' } })})

本地运行边缘函数

您可以使用 supabase functions serve 命令在本地运行边缘函数:

1
2
supabase start # 启动 Supabase 服务栈supabase functions serve # 启动函数监听服务

functions serve 命令支持热重载功能。它会监听文件变化并自动重启 Deno 服务。

本地调用边缘函数

当本地边缘函数服务运行时,您可以使用 curl 或客户端库来调用它。如果要从浏览器调用函数,需要处理 CORS 请求。详见 CORS 文档

1
2
3
4
curl --request POST 'http://localhost:54321/functions/v1/hello-world' \ --header 'Authorization: Bearer SUPABASE_ANON_KEY' \ --header 'Content-Type: application/json' \ --data '{ "name":"Functions" }'

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

如果使用不同的负载执行函数,响应也会相应变化。

--data '{"name":"Functions"}' 修改为 --data '{"name":"World"}' 并重新执行命令。

后续步骤

查看 部署到生产环境 指南,将您的边缘函数发布到全球可用。

了解 开发技巧 获取最佳实践建议。