本地开发边缘函数
在本地机器上开始使用边缘函数。
让我们在本地机器上创建一个基础的边缘函数,然后使用 Supabase CLI 调用它。
初始化项目
在本地机器上的文件夹中创建一个新的 Supabase 项目:
1supabase init
未安装CLI?
查看 CLI文档 了解如何在本地机器上安装 Supabase CLI。
如果您使用 VS Code,运行 supabase init
时可以让 CLI 自动创建有用的 Deno 设置。当提示"Generate VS Code settings for Deno? [y/N]"时选择 y
!
如果您使用 IntelliJ IDEA 系列编辑器(如 WebStorm),可以在 supabase init
时使用 --with-intellij-settings
标志来自动生成 Deno 配置。
创建边缘函数
让我们在项目中创建一个名为 hello-world
的新边缘函数:
1supabase functions new hello-world
这会在您的 supabase
文件夹中创建函数模板:
12345└── supabase ├── functions │ └── hello-world │ │ └── index.ts ## 您的函数代码 └── config.toml
如何编写代码
生成的函数使用原生 Deno.serve 来处理请求。您可以访问 Request
和 Response
对象。
以下是生成的 Hello World 边缘函数,它接收 Request
中的名称并返回问候语:
12345678Deno.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
命令在本地运行边缘函数:
12supabase start # 启动 Supabase 服务栈supabase functions serve # 启动函数监听服务
functions serve
命令支持热重载功能。它会监听文件变化并自动重启 Deno 服务。
本地调用边缘函数
当本地边缘函数服务运行时,您可以使用 curl 或客户端库来调用它。如果要从浏览器调用函数,需要处理 CORS 请求。详见 CORS 文档。
1234curl --request POST 'http://localhost:54321/functions/v1/hello-world' \ --header 'Authorization: Bearer SUPABASE_ANON_KEY' \ --header 'Content-Type: application/json' \ --data '{ "name":"Functions" }'
SUPABASE_ANON_KEY 在哪里?
运行 supabase status
命令查看本地凭证信息。
您应该会收到响应 { "message":"Hello Functions!" }
。
如果使用不同的负载执行函数,响应也会相应变化。
将 --data '{"name":"Functions"}'
修改为 --data '{"name":"World"}'
并重新执行命令。
后续步骤
查看 部署到生产环境 指南,将您的边缘函数发布到全球可用。
了解 开发技巧 获取最佳实践建议。