架构

本页介绍 PostgREST 的架构。

鸟瞰图

../_images/arch.png

代码地图

本节简要介绍一些重要的模块。

主程序

程序的起点是 Main.hs.

CLI

主程序然后调用 CLI.hs,它负责 CLI.

应用程序

App.hs 负责组合不同的模块。

身份验证

Auth.hs 负责 身份验证.

API 请求

ApiRequest.hs 负责解析 URL 查询字符串(遵循 PostgREST 语法)、请求头和请求主体。

如果请求无效,则可能在此级别被拒绝。例如,当向 PostgREST 提供未知的媒体类型或使用未知的 HTTP 方法时。

计划

使用 Schema 缓存,Plan.hs 填充完成用户请求所需的带外 SQL 细节(如 ON CONFLICT (pk) 子句)。

如果请求无效,则可能在此级别被拒绝。例如,当对不存在的资源进行资源嵌入时。

查询

Query.hs 生成满足用户请求所需的 SQL 查询(参数化和准备)。

仅在此阶段才会使用连接池中的连接。

Schema 缓存

SchemaCache.hs 负责 Schema 缓存.

配置

Config.hs 负责 配置.

管理员

Admin.hs 负责 管理员服务器.

HTTP

HTTP 服务器由 Warp 提供。

监听器

Listener.hs 负责 监听器