调用 RPC
通过 HTTP RESTful API 调用 PostgreSQL 数据库中的自定义函数(Stored Procedures / Functions)。
💡 提示:PostgreSQL 数据库的 HTTP API 基于 PostgREST 协议,RPC 调用语法与 PostgREST 完全兼容。
基础语法
POST https://your-envId.api.tcloudbasegateway.com/v1/rdb/rest/rpc/:function_name
Authorization: Bearer <access_token>
Content-Type: application/json
💡 提示:access_token 请参考 获取 AccessToken
创建函数
在调用 RPC 之前,需要先在 PostgreSQL 数据库中创建函数。可以通过 DMC 数据库管理工具执行 SQL 创建函数。
-- 创建一个简单的加法函数
CREATE OR REPLACE FUNCTION add_numbers(a integer, b integer)
RETURNS integer AS $$
SELECT a + b;
$$ LANGUAGE sql;
-- 创建一个查询电影的函数
CREATE OR REPLACE FUNCTION search_films(keyword text)
RETURNS SETOF film AS $$
SELECT * FROM film WHERE title ILIKE '%' || keyword || '%';
$$ LANGUAGE sql;
-- 创建一个统计函数
CREATE OR REPLACE FUNCTION get_film_stats()
RETURNS json AS $$
SELECT json_build_object(
'total', COUNT(*),
'avg_duration', ROUND(AVG(duration)),
'max_duration', MAX(duration),
'min_duration', MIN(duration)
) FROM film;
$$ LANGUAGE sql;
基础调用
带参数调用
# 调用加法函数
curl -X POST 'https://{{host}}/v1/rdb/rest/rpc/add_numbers' \
-H 'Authorization: Bearer <access_token>' \
-H 'Content-Type: application/json' \
-d '{ "a": 1, "b": 2 }'
请求返回示例
HTTP/1.1 200 OK
Header:
content-type: application/json; charset=utf-8
Body:
3
无参数调用
# 调用统计函数
curl -X POST 'https://{{host}}/v1/rdb/rest/rpc/get_film_stats' \
-H 'Authorization: Bearer <access_token>' \
-H 'Content-Type: application/json'
请求返回示例
HTTP/1.1 200 OK
Header:
content-type: application/json; charset=utf-8
Body:
{
"total": 15,
"avg_duration": 148,
"max_duration": 194,
"min_duration": 96
}