PostgREST 文档

_images/postgrest.png
https://img.shields.io/github/stars/postgrest/postgrest.svg?style=social https://img.shields.io/github/v/release/PostgREST/postgrest.svg https://img.shields.io/docker/pulls/postgrest/postgrest.svg https://img.shields.io/badge/gitter-join%20chat%20%E2%86%92-brightgreen.svg https://img.shields.io/badge/Donate-Patreon-orange.svg?colorB=F96854 https://img.shields.io/badge/Donate-PayPal-green.svg

PostgREST 是一个独立的 Web 服务器,它将您的 PostgreSQL 数据库直接转换为 RESTful API。数据库中的结构约束和权限决定了 API 端点和操作。

赞助商

_images/cybertec-dark.svg
_images/cybertec.svg
_images/gnuhost.png
_images/neon-dark.jpg
_images/neon.jpg

_images/code-build-dark.png
_images/code-build.png
_images/supabase-dark.png
_images/supabase.png
_images/tembo.png

数据库作为单一事实来源

使用 PostgREST 是手动 CRUD 编程的替代方案。自定义 API 服务器存在问题。编写业务逻辑通常会复制、忽略或阻碍数据库结构。对象关系映射是一个泄漏的抽象,导致缓慢的命令式代码。PostgREST 哲学建立了一个单一的声明式事实来源:数据本身。

声明式编程

让 PostgreSQL 帮你连接数据,并让它的查询规划器来处理细节,比你自己循环遍历行更容易。为数据库对象分配权限比在控制器中添加守卫更容易。(对于数据依赖中的级联权限来说尤其如此。)设置约束比在代码中添加大量健全性检查更容易。

防泄漏抽象

没有涉及 ORM。创建新视图是在 SQL 中进行的,具有已知的性能影响。数据库管理员现在可以从头开始创建 API,无需任何自定义编程。

专注于一件事

PostgREST 的范围很集中。它与 Nginx 等其他工具配合良好。这迫使你将以数据为中心的 CRUD 操作与其他问题清晰地分离。使用一系列锋利的工具,而不是构建一个巨大的泥球。

获取支持

该项目拥有一个友好且不断壮大的社区。对于讨论,请使用 Github 讨论页面 或加入我们的 聊天室。你也可以在 Github 问题 页面上报告或搜索错误/功能。

发行说明

发行说明发布在 PostgREST 的 GitHub 发布页面 上。

教程

你是 PostgREST 的新手吗?从这里开始!

还可以查看 安装社区教程

参考资料

PostgREST 功能的技术参考资料。

解释

PostgREST 中的关键概念。

操作方法

帮助你解决特定用例的食谱。

集成

生态系统

PostgREST 拥有不断增长的生态系统,包括示例、库和实验。以下是一些精选。

生产环境

以下是一些在生产环境中使用 PostgREST 的公司。

用户评价

“开发速度太快了,感觉像作弊!”

—François-Guillaume Ribreau

“我不得不说,与我们基于 Node.js/Waterline ORM 的 API 相比,CPU/内存使用率简直是天壤之别。很难让它超过 60/70 MB,而我们目前的 API 在 6 个实例(dynos)上运行时,始终达到 1GB。”

—Louis Brauer

“我真的很喜欢突然之间我可以用 SQL DDL(和 v8 JavaScript 函数)编写微服务。我避开了很多样板代码。接下来,我们用 6 个月的时间完成了对 Spring+MySQL 遗留应用程序的完整重写。速度快了 10 倍,代码非常简洁。旧的应用程序花了 3 年时间和一个 4 人的团队才开发出来。”

—Simone Scarduzio

“我喜欢 PostgREST 专注于一件事,并且把它做好。PostgREST 负责弥合我们的 HTTP 服务器和 PostgreSQL 数据库之间的差距,而我们可以专注于用单一语言:SQL 开发我们的 API。这将数据库置于我们架构的中心,并促使我们提高 SQL 编程和数据库设计的技能。”

—Eric Bréchemier,数据工程师,eGull SAS

“PostgREST 性能出色、稳定且透明。它让我们能够快速启动项目,并专注于我们的数据和应用程序,而不是构建 ORM 层。在我们的 k8s 集群中,我们为每个要公开的模式运行几个 pod,并根据需求进行扩展。再满意不过了。”

—Anupam Garg,Datrium, Inc.

贡献

请参阅 PostgREST 主仓库中的 贡献指南