发布时间:2026/9/4 15:22:45
PostgREST 入门实战:把 Postgres 表变成可用的 REST API PostgREST 入门实战把 Postgres 表变成可用的 REST API【免费下载链接】postgrestREST API for any Postgres database项目地址: https://gitcode.com/GitHub_Trending/po/postgrestPostgREST 把 PostgreSQL 的表、视图和函数自动暴露为 REST API 端点省掉手写 CRUD 路由。适合已经能跑 Postgres、想快速拿到 JSON 接口的开发者。 为什么选 PostgREST传统做法里你起一个 Node 或 Python 项目里面塞满查表 → 拼 JSON → 返回的样板代码。PostgREST 的思路不一样它认为数据库本身就是 API 的真相来源你只管建表、设权限PostgREST 在中间做一层 HTTP 到 SQL 的翻译把结果序列化成 JSON 吐回去。这意味着过滤、排序、分页、字段筛选全部通过 URL 参数完成权限控制完全交给 PostgreSQL 的角色体系和行级安全策略。数据模型一变加张表、改个字段API 立刻跟着变不用改代码、不用重启框架。和用 ORM 自动生成接口的方案相比PostgREST 的权限粒度更细——你可以精确到某角色只能读某列而不必在应用层再写一遍if user.can_read。对于内部工具、BFF 层、数据看板这类场景重复代码几乎归零。用 Docker 五步跑通 PostgREST下面用 Docker 演示完整流程好处是不用在本机同时装 Postgres 和 PostgREST 两套依赖。第 1 步起一个 Postgres 容器。目的是给 PostgREST 提供数据源-p 5432:5432让宿主机 5432 端口直通容器docker run -d --name pg -p 5432:5432 -e POSTGRES_PASSWORDdev123 postgres:16第 2 步安装 PostgREST。macOS 执行brew install postgrestLinux 用各自包管理器apt、pacman等Docker 用户直接docker pull postgrest/postgrest镜像基于 scratch 构建约 14 MB。第 3 步写最小配置文件。告诉它连哪个库、暴露哪些模式三行就够db-uri postgres://postgres:dev123localhost:5432/postgres db-schemas api server-port 3000第 4 步启动。成功后终端打印Starting PostgREST ...以及API server listening on port 3000说明服务已就绪postgrest tutorial.conf第 5 步验证。另开终端执行curl http://localhost:3000/返回 200 即跑通。高频配置参数速查配置文件里可选参数很多下面这几条覆盖了大多数日常场景参数默认值作用db-uri必填数据库连接串db-schemaspublic暴露为 API 的模式逗号分隔db-anon-role无未携带 JWT 时使用的角色server-port3000HTTP 监听端口jwt-secret无JWT 签名验证密钥db-pool10连接池大小PostgREST 连接池调优环境变量可以覆盖配置文件规则是PGRST_前缀加参数名全大写比如PGRST_DB_URI。容器化部署时尤其省事不用改文件。一个请求是怎么变成 SQL 的当你请求GET /books?authoreq.鲁迅orderid.desc时内部经历了这些步骤关键点PostgREST 没有 ORM 映射、没有应用层缓存它本质是一个HTTP → SQL 翻译器。你建了多少张表它就有多少个端点角色授了什么权它就能做什么操作。上图的Films、Actors、Roles等表在 API 里直接对应/films、/actors、/roles这些路径。 角色与权限PostgREST 的安全模型PostgREST 自身不做鉴权它把谁能访问什么完全交给 PostgreSQL 角色系统。好处是权限变更不需要重启服务且和数据库备份天然一致。三类角色的分工认证器authenticatorPostgREST 用它建立数据库连接自身不查表只负责切换身份。匿名角色anon没有有效 JWT 的请求落到这个角色通常只给SELECT。用户角色JWT 的 payload 里声明了role字段PostgREST 验签后SET ROLE到对应角色执行查询。最小授权示例三行 SQL 锁死匿名用户只能读books表CREATE ROLE web_anon NOLOGIN; GRANT USAGE ON SCHEMA api TO web_anon; GRANT SELECT ON api.books TO web_anon;如果业务要求用户只能看自己的数据在表上启用行级安全PostgREST 行级安全用策略里current_setting(request.jwt.claims)取 JWT 中的用户 ID 做过滤即可不需要在应用层重复写判断逻辑。搭一个图书借阅的最小 API下面从零走一遍端到端流程建表 → 插数据 → 授权 → 启动 → 用 curl 验证读写。业务场景是图书馆借阅记录。建表、插数据、授权一锅端CREATE SCHEMA api; CREATE TABLE api.loans ( id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, title TEXT NOT NULL, reader TEXT NOT NULL, due DATE NOT NULL ); INSERT INTO api.loans (title, reader, due) VALUES (三体, 张一, 2025-06-01), (活着, 李二, 2025-06-15); -- 匿名角色只读 CREATE ROLE web_anon NOLOGIN; GRANT USAGE ON SCHEMA api TO web_anon; GRANT SELECT ON api.loans TO web_anon; -- 认证器角色供 PostgREST 连接 CREATE ROLE authenticator LOGIN NOINHERIT PASSWORD pw; GRANT web_anon TO authenticator;启动后验证读写# 按书名过滤读取 curl http://localhost:3000/loans?titleeq.三体 # 新增一条借阅需先给角色加 INSERT 权限或切换角色 curl -X POST http://localhost:3000/loans \ -H Content-Type: application/json \ -d {title:围城,reader:王三,due:2025-07-01}第一条返回包含id、title、reader、due四个字段的 JSON 数组。第二条如果当前角色没有INSERT权限会返回 401 和permission denied for table loans这正是期望行为——权限由数据库决定而不是代码里的if。常见报错速查症状原因一句话解法connection refused连不上数据库核对db-uri里的主机、端口、密码permission denied for table xxx角色缺权限用GRANT补或确认db-anon-role配对了invalid JWT/ 401签名校验失败确认jwt-secret与生成 token 时用的密钥一致libpq.so.5: cannot open shared object缺 PostgreSQL 客户端库apt install libpq-dev或把 PG bin 目录加入 PATHport 3000 already in use端口被占改server-port或lsof -i :3000找到占用进程想继续调连接池参数或研究行级安全的策略写法官方参考文档 里每一项都有详细说明。【免费下载链接】postgrestREST API for any Postgres database项目地址: https://gitcode.com/GitHub_Trending/po/postgrest创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

2026/9/4 15:22:45

当企业使用语音智能体,如何提升数字员工的运营效率?

数字员工在企业的运营中扮演着越来越重要的角色,特别是通过语音智能体的应用。这种系统能够大幅优化业务流程,让数字员工以更高效率处理客户关系和需求。通过全天候自动外呼,数字员工能够接触到更多潜在客户,提高了沟通频率和业务…

2026/9/4 15:22:45

如何用Pixelle-Video跑通AI自动短视频生成完整教程

如何用Pixelle-Video跑通AI自动短视频生成完整教程 【免费下载链接】Pixelle-Video 🚀 AI 全自动短视频引擎 | AI Fully Automated Short Video Engine 项目地址: https://gitcode.com/GitHub_Trending/pi/Pixelle-Video Pixelle-Video 是一个 AI 全自动短视…

2026/9/4 15:17:44

CAD基本尺寸标注全攻略:从样式设置到实战技巧

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/4 19:03:17

React虚拟列表实战:解决海量聊天消息卡顿与白屏问题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/4 19:03:17

OpenClaw智能体实战:部署配置与Flash 3.7接入指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/4 19:03:17

OpenCV图像处理入门:从环境搭建到边缘检测实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/4 19:03:17

从JK触发器到数字记忆:理解时序逻辑与状态管理的基石

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/4 19:03:17

Qt开发实战指南:从零基础到就业能力的C++跨平台GUI编程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/4 18:58:16

基于Python的视频物体检测:从理论到实践的全流程指南

一、视频物体检测的技术基础与核心挑战视频物体检测的 core 使命在于, 于相继的帧里, 辨认并且确定目标物体的位置, 它的技术困难程度明显地比静态图像检测要高, 主要面临的挑战涵盖着:对于实时性方面有的要求, 视频帧率一般处在25 - 30fps这个范围, 并且要求检测算法在毫秒级别…

2026/9/3 18:28:26

vSound小提琴数字处理器实操指南:从接线到演出的完整配置

电小提琴或者原声小提琴插电演出,第一个绕不开的坎就是声音难听。原声琴的共鸣和空气感一旦进了拾音器,出来的往往是一坨干瘪、发尖、带着奇怪塑料味的信号。我当初第一次把琴接上乐队调音台,直接被主唱吐槽"你这声音像在锯钢丝"。…

2026/9/3 14:29:47

传感器接口IC如何攻克生物化学传感的微弱信号难题?

1. 从电极到比特流:为什么生物化学传感必须依赖专用接口IC 做生物化学传感的人都有过类似的经历:明明传感器本身性能很好,信号输出却一塌糊涂——噪声大、漂移明显、重复性差,怎么调都达不到预期。很多时候问题并不在传感器&#…

2026/9/3 14:30:35

STM32F411CEU6多通道ADC采集:扫描模式+DMA实现详解

1. 多通道 ADC 的用武之地把“Multichannel ADC”和“STM32F411CEU6”这两个关键字放在一起,其实就是嵌入式开发里最常遇到的一类需求:用一块不算贵的 MCU,同时采集多路模拟信号。STM32F411CEU6 是 48 引脚的 Cortex-M4F 主控,主频…

2026/9/4 0:00:58

STM32H743 SPI从机DMA双缓冲通信实战

简介:本资源是面向嵌入式开发工程师与STM32进阶学习者的SPI DMA双机通信从机端完整实现方案,聚焦STM32H743高性能Cortex-M7单片机在工业控制与高速数据交互场景下的从机通信开发痛点。压缩包含1355个文件,主体为599个C源码与321个头文件&…

2026/9/4 0:00:58

CPU开盖降温教程:20元成本让温度直降30度的原理与实践

最近很多朋友都在抱怨,自己的电脑一到夏天就变成"烤箱",玩游戏时CPU温度动不动就飙到90度以上,风扇噪音堪比直升机。更让人头疼的是,明明配置不错,却因为高温降频导致性能大打折扣。如果你也遇到了类似问题&…

2026/9/4 0:00:58

ArkTS 表单工程:场地预约页的三态场次 Grid 与校验

ArkTS 表单工程:场地预约页的三态场次 Grid 与校验 App 14「运动场地预约」场地 Tab(Func1Tab),是整 App 交互最丰富的页面——场地横向切换 三色图例 渐变预约预览卡 快捷模板 今日场次 Grid(可选/已选/已满三态&…

2026/9/3 20:43:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/3 17:51:43

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/3 21:06:57

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…