You need to enable JavaScript to run this app.
文档中心
AI 原生 BaaS 平台 Supabase 版

AI 原生 BaaS 平台 Supabase 版

复制全文
下载 pdf
使用 Supabase 控制台
使用 Edge Function
复制全文
下载 pdf
使用 Edge Function
本文介绍不同角色使用 Edge Function 功能模块的方式与方法。​
背景信息​
Supabase 控制台的功能模块面向应用开发流程中的不同角色,提供了不同的使用方法。​
角色​
作为 BaaS 服务,Supabase 控制台的功能模块可以向应用开发流程中的不同角色:应用(APP)开发者和应用(APP)使用者提供服务。​
方法​
Supabase 控制台的 Edge Function 功能可以在控制台上进行配置和使用,也可通过两类 API 提供服务。​
  • Admin API:指 APP 开发者配置 Supabase 的管理 API,需要 SERVICE_ROLE_KEY。​
  • Client API:是指 APP 使用者访问 Supabase 的 API,通常是在登录后调用。​
调用 Admin API 和 Client API 的方式及示例如下。​
​
API 类型​
使用者​
作用​
方式及示例​
Admin API(HTTP 接口)​
​
应用(APP)开发者​
管理 EdgeFunction​
​
  • 创建函数 & 更新函数 body:参数参考:https://supabase.com/docs/reference/api/v1-deploy-a-function​
​
curl -X POST $SUPABASE_BASE_URL/functions/v1/deploy \​
-H "apikey: ${SERVICE_ROLE_KEY}" \​
-H "Authorization: Bearer ${SERVICE_ROLE_KEY}" \​
-H "Content-Type: application/json" ​
-d '{...}'​
​
  • 查询函数列表:https://supabase.com/docs/reference/api/v1-list-all-functions​
注意​
URL path 最后一定要有(/),否则会报错 401。​
​
# 查询配置​
curl -X GET $SUPABASE_BASE_URL/functions/v1/ \​
-H "apikey: ${SERVICE_ROLE_KEY}" \​
-H "Authorization: Bearer ${SERVICE_ROLE_KEY}" \​
-H "Content-Type: application/json" ​
​
Client API(Supabase Client SDK) ​
应用(APP)使用者​
在 APP 中触发 EdgeFunction​
​
​
curl -X POST $SUPABASE_BASE_URL/functions/v1/{function_slug} \​
-H "apikey: ${ANON_KEY}" \​
-H "Authorization: Bearer ${ACCESS_TOKEN}" \​
-H "Content-Type: application/json" \​
-d '{...}'​
​
注意​
${ACCESS_TOKEN} 为 APP 使用者登录成功后自动获取的。​
​
在 Supabase 控制台管理 Edge Function​
前提条件​
  • 已创建使用 Supabase 引擎的 Workspace 且 Workspace 的状态为运行中。关于创建 Workspace 的更多详细信息,请参见创建 Workspace。​
  • 已通过目标 Workspace 成功登录 Supabase 控制台。关于登录控制台的详细信息,请参见登录 Supabase 控制台。​
创建 Edge Function​
  1. 在 Supabase 控制台单击左侧的 Edge Functions,进入 Edge Functions 页面。​
  1. 在 Edge Functions 页面,单击 Deploy a new function > via Editor,进入 Create new edge function 页面。​
说明​
您也可以选择 Deploy a new function > via AI Assistant,通过自然语言与 AI 助手交流,完成 Edge Function 的创建。​
  1. 在 Create new edge function 页面,按需选择脚本的类型并在编辑器中完成 Edge Function 的编写后,单击页面底部的 Deploy,即可完成 Edge Function 的创建。​
说明​
当前支持使用 Deno、Python 3.12、Python 3.10 和 Python 3.9 创建 Edge Function。​
更新 Edge Function​
  1. 在 Supabase 控制台单击左侧的 Edge Functions,进入 Edge Functions 页面。​
  1. 在 Edge Functions 页面的 Edge Function 列表中,单击目标 Edge Function,即可在编辑器中打开 Edge Function。​
  1. 在编辑器中,完成所需的修改后,单击页面底部的 Deploy updates 并在弹出的对话框中再次单击 Deploy updates,即可完成 Edge Function 的更新。​
通过 Admin API 管理 Edge Function​
创建 Deno 函数 & 更新 Deno 函数 body​
核心参数参考。​
​
curl -X POST $SUPABASE_BASE_URL/functions/v1/deploy?slug=my_deno_func \​
-H "apikey: ${SERVICE_ROLE_KEY}" \​
-H "Authorization: Bearer ${SERVICE_ROLE_KEY}" \​
-H "Content-Type: application/json" \​
--data-raw $'{​
"files": [​
{​
"name": "index.ts",​
"content": "// Deno\\n// Setup type definitions for built-in Supabase Runtime APIs\\nimport \\"jsr:@supabase/functions-js/edge-runtime.d.ts\\";\\ninterface reqPayload {\\n name: string;\\n}\\nconsole.info(\'server started\');\\nDeno.serve(async (req: Request) => {\\n const { name }: reqPayload = await req.json();\\n const data = {\\n message: `Hello ${name}\u0021`,\\n };\\n return new Response(\\n JSON.stringify(data),\\n { headers: { \'Content-Type\': \'application/json\', \'Connection\': \'keep-alive\' }}\\n );\\n});"​
}​
],​
"metadata": {​
"entrypoint_path": "index.ts",​
"name": "my_deno_func",​
"verify_jwt": true​
}​
}'​
​
创建 Python 函数 & 更新 Python 函数 body:​
  • body 中 的 metadata 需要显式指定 runtime 为以下枚举值之一:​
  • native-python3.9/v1​
  • native-python3.10/v1​
  • native-python3.12/v1​
​
curl -X POST $SUPABASE_BASE_URL/functions/v1/deploy?slug=my_python_func \​
-H "apikey: ${SERVICE_ROLE_KEY}" \​
-H "Authorization: Bearer ${SERVICE_ROLE_KEY}" \​
-H "Content-Type: application/json" \​
--data-raw $'{​
"files": [​
{​
"name": "app.py",​
"content": "from fastapi import FastAPI\\n\\napp = FastAPI()\\n\\n@app.post(\'/\')\\nasync def root_post_handler(payload: dict):\\n return {\\"message\\": \\"POST request received\\", \\"payload\\": payload}"​
},​
{​
"name": "requirements.txt",​
"content": "fastapi\\nuvicorn[standard]"​
},​
{​
"name": "run.sh",​
"content": "#\u0021/bin/bash\\nset -ex\\ncd `dirname $0`\\n\\n# A special check for CLI users (run.sh should be located at the \'root\' dir)\\nif [ -d \\"output\\" ]; then\\n cd ./output/\\nfi\\n\\n# Default values for host and port\\nHOST=\\"0.0.0.0\\"\\nPORT=${_BYTEFAAS_RUNTIME_PORT:-8000}\\nTIMEOUT=${_FAAS_FUNC_TIMEOUT}\\nexport PYTHONPATH=$PYTHONPATH:./site-packages\\n\\n# Parse arguments\\nwhile [[ $# -gt 0 ]]; do\\n case $1 in\\n --port)\\n PORT=\\"$2\\"\\n shift 2\\n ;;\\n --host)\\n HOST=\\"$2\\"\\n shift 2\\n ;;\\n *)\\n shift\\n ;;\\n esac\\ndone\\n\\nexec python3 -m uvicorn app:app --host $HOST --port $PORT --timeout-graceful-shutdown $TIMEOUT"​
}​
],​
"metadata": {​
"entrypoint_path": "app.py",​
"name": "my_python_func",​
"verify_jwt": true,​
"runtime": "native-python3.12/v1"​
}​
}'​
​
更新函数元数据​
参数参考。​
​
curl -X PATCH $SUPABASE_BASE_URL/v1/projects/default/functions/{function_slug} \​
-H "apikey: ${SERVICE_ROLE_KEY}" \​
-H "Authorization: Bearer ${SERVICE_ROLE_KEY}" \​
-H "Content-Type: application/json" ​
-d '{​
"projectRef": "default",​
"name": "helloedge",​
"payload": {​
"description": "hi vefaas"​
}​
}'​
​
删除函数​
​
curl -X DELETE $SUPABASE_BASE_URL/v1/projects/default/functions/{function_slug} \​
-H "apikey: ${SERVICE_ROLE_KEY}" \​
-H "Authorization: Bearer ${SERVICE_ROLE_KEY}" \​
-H "Content-Type: application/json" ​
​
查询函数元数据​
参数参考。​
​
curl -X GET $SUPABASE_BASE_URL/v1/projects/default/functions/{function_slug} \​
-H "apikey: ${SERVICE_ROLE_KEY}" \​
-H "Authorization: Bearer ${SERVICE_ROLE_KEY}" \​
-H "Content-Type: application/json" ​
​
查询函数 body​
参数参考。​
​
curl -X GET $SUPABASE_BASE_URL/functions/v1/{function_slug}/body \​
-H "apikey: ${SERVICE_ROLE_KEY}" \​
-H "Authorization: Bearer ${SERVICE_ROLE_KEY}" \​
-H "Content-Type: application/json" ​
​
查询函数列表​
参数参考。​
注意​
URL path 最后一定要有(/),否则会报错 401。​
​
# 查询配置​
curl -X GET $SUPABASE_BASE_URL/functions/v1/ \​
-H "apikey: ${SERVICE_ROLE_KEY}" \​
-H "Authorization: Bearer ${SERVICE_ROLE_KEY}" \​
-H "Content-Type: application/json" ​
​
示例——通过 Supabase Client SDK 调用 Edge Function​
​
import { createClient } from '@supabase/supabase-js'​
const supabase = createClient(​
"<SUPABASE_BASE_URL>",​
"<SUPABASE_ANON_KEY>")​
​
// 调用 Edge Function​
async function runFunction() {​
const { data, error } = await supabase.functions.invoke('myfunction', {​
body: { ​
name: 'test', ​
age: 10​
}​
})​
​
if (error) {​
console.log('调用失败:', error.message)​
return​
}​
​
console.log('调用成功:', data)​
return data​
}​
​
最近更新时间:2026.04.21 19:11:18
这个页面对您有帮助吗?
有用
有用
无用
无用