PostgREST:将 PostgreSQL 数据库秒变 RESTful API

Author Avatar
ZhuXing
发表:2025-03-29 00:43:00
修改:2025-03-29 00:44:03

PostgREST:将 PostgreSQL 数据库秒变 RESTful API

什么是 PostgREST?

PostgREST 是一个独立的 Web 服务器,可以将您的 PostgreSQL 数据库直接转换为 RESTful API。它能够自动读取您的数据库结构,并为每个表和视图创建对应的 API 端点,让您无需编写任何后端代码就能快速构建 API。

PostgREST 的主要特性

自动 API 生成

  • 自动为数据库表创建 CRUD 端点
  • 支持复杂的查询操作

灵活的查询语法

  • 支持过滤、排序、分页
  • 支持字段选择
  • 支持关联查询

安全特性

  • JWT 认证支持
  • 行级安全策略
  • 基于角色的访问控制

性能优势

  • 直接将 HTTP 请求转换为 SQL
  • 高效的数据库连接池
  • 低延迟响应

快速开始

https://github.com/PostgREST/postgrest
去 Releases 下一个解压出来

  1. 配置文件

首先创建一个 postgrest.conf 配置文件,放在解压出来的可执行文件同一个目录下:

db-uri = "postgres://postgres:707020@localhost:5432/face_attendance"
db-schema = "public"
db-anon-role = "postgres"
server-port = 3000
server-host = "127.0.0.1"
jwt-secret = "your-super-secret-jwt-token"

这个配置文件定义了:

  • 数据库连接信息
  • 使用的数据库 schema
  • 服务器端口和主机
  • JWT 密钥(用于身份认证)

然后.\postgrest.exe postgrest.conf启动

  1. 数据库示例

    假设我们有以下数据库结构:

    CREATE TYPE user_role AS ENUM ('teacher', 'student');
    
    CREATE TABLE users (
        user_id SERIAL PRIMARY KEY,
        username VARCHAR(50) NOT NULL UNIQUE,
        password VARCHAR(100) NOT NULL,
        role user_rle NOT NULL,
        real_name VARCHAR(50) NOT NULL,
        created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
    );
    

    image-pszq.png

  2. PostgREST API 使用指南

    基础 CRUD 操作

    POST:

    POST http://localhost:3000/users
    Content-Type: application/json
    
    {
       "username": "teacher2",
       "password": "123456",
       "role": "teacher",
       "real_name": "王老师"
    }
    

    image-xqwy.png
    可以看到,数据里已经有这一条新增的记录了
    image-cpii.png

    Get:
    image-nyhd.png

    Patch:
    image-hgkw.png
    image-ajjb.png
    image-ccqw.png

    Delete:
    image-secc.png
    image-tlbp.png

  3. 高级查询

    image-fiyu.png

    GET http://localhost:3000/users?role=eq.teacher

    image-omcu.png

评论