动机

PostgREST 是一个独立的 Web 服务器,可为您的 PostgreSQL 数据库直接生成 RESTful API。 数据库中的结构约束和权限决定了 API 的端点(endpoints)和操作。

PostgREST 是手动编写 CRUD 的替代方案。通常的 API 服务器普遍遇到遇到一个问题。那就是编写业务逻辑往往会重复劳动,并且对于数据结构存在疏漏。对象关系(Object-relational)映射是一种存疑(leaky)的抽象,可能导致产生低效的代码。PostgREST 哲学建立了一个单一的声明性真理来源————数据本身。

声明性编程

比起对着查询结果重复劳动,让查询计划理清细节使 PostgreSQL 为您添加数据是一件更容易的事。为数据库对象分配权限比在控制器(controllers)中添加保护更容易(这对于数据依赖关系中的级联权限尤其如此)。并且设置约束比编写重复代码进行健全检查更容易。

Leak-proof 抽象

没有 ORM 参与。创建 SQL 性能提示的视图。数据库管理员(DA)现在可以自行创建 API,无需开发参与。

拥抱关系模型

1970年,E. F. Codd 在他的文章 “大型共享数据库数据关系模型” 中批评了当时主导的数据库分层模型。于都文章会发现层次数据库和嵌套 http 路由之间存在惊人相似性。而在 PostgREST 中,我们尝试使用灵活的过滤和嵌入,而不是嵌套路由。

一个重点

PostgREST 有一个重要的特点。它适用于如 Nginx 的工具。这可以强行将以数据为中心的 CRUD 操作与其他问题进行干净分离。

改进共享

与任何开源项目一样,我们都可以从工具中的功能和修复中获益。这比在各自私有库中耦合的改进更有益处。

生态系统

PostgREST 具有不断增长的生态系统,示例、库、实验和用户。这是一个选择。

客户端库

额外通知

在于外部交互上(LISTEN/NOTIFY)PostgreSQL 有拓展到外部队列进行进一步处理的网桥。这允许存储过程在数据库外发起动作,例如发送电子邮件。

示例应用

拓展

广告

  • subZero - Automated GraphQL & REST API with built-in caching (powered in part by PostgREST)

赞誉

“开发起来太快了, 感觉就像在作弊!”

—François-G. Ribreau

“我不得不说, 与 Node.js/Waterline ORM 构建的 API 对比
CPU/Memory usage 简直是难以置信. 当我们在 6 个示例 (dynos) 持续求情 1GB 数据是它甚至只有 60/70 MB 大小.”

—Louis Brauer

“我非常喜欢这样一个事实,偶然使用 SQL DDL(和 V8 javascript)开发微服务。 我们在 6 个月内完全重写了一个 Spring + MySQL 遗留应用程序。 速度快 10 倍,代码很简洁。而之前的人用了 4 个人花了 3 年时间。”

—Simone Scarduzio

获得支持

该项目有一个友好且不断成长的社区。加入我们的 聊天室 来讨论和求助。同时你也可以在 Github 的 issues 上搜索 bugs/features。