【ポストグレスト】

PostgREST とは?

最終更新:
💡 PostgreSQLの構造と権限を、APIにつなぐ

PostgreSQLのテーブル・ビュー・関数をREST APIとして公開する独立したWebサーバー。公開対象や操作は、データベースの構造・権限とPostgRESTの設定に基づく。

📌 このページのポイント
DBの構造と権限をAPIにつなぐPostgreSQLテーブル・ビュー関数公開範囲・権限PostgRESTJWT検証ロール切替HTTPのAPIGET /people追加・更新・削除POST/rpc/add_them操作できる範囲は設定と権限によるDB設計とアクセス制御の準備が必要
公開対象のテーブル・ビュー・関数をAPIとして提供する関係。矢印はAPIへの対応を表す。JWTの発行や行単位の権限制御は別途準備する。
ひよこ ひよこ
コードを全く書かずにAPIができるの?
ペンギン先生 ペンギン先生
取得や追加などのAPI処理を一つずつ実装する手間を減らせるよ。ただし、テーブルやビューを設計し、公開する範囲や接続・権限を設定する作業は必要なんだ。
ひよこ ひよこ
全部のテーブルが誰にでも見える?
ペンギン先生 ペンギン先生
公開対象のスキーマにあり、そのリクエストのDBロールでアクセスできるテーブルやビューが対象だよ。GETで取得、POSTで追加、PATCHで更新、DELETEで削除できるかも権限などに左右されるんだ。
ひよこ ひよこ
JWTはどう使うの?
ペンギン先生 ペンギン先生
リクエストに付いたJWTを検証し、設定に従ってDBロールへ切り替えるよ。ロールの作成や切替権限は事前に設定する。ログインやJWT発行まで自動で用意するという意味ではないんだ。
ひよこ ひよこ
行ごとのアクセスも制限できる?
ペンギン先生 ペンギン先生
PostgreSQLの行単位のアクセス制御を利用できるよ。ただし、有効化とポリシー設定が必要で、所有者などには適用の例外もある。JWTを付けるだけで全データが適切に保護されるわけではないんだ。
ひよこ ひよこ
複雑な処理も公開できる?
ペンギン先生 ペンギン先生
許可したDB関数を「/rpc/関数名」で呼び出せるよ。たとえば計算や更新を関数にまとめられる。ただしPostgreSQLのストアドプロシージャとは別で、PostgRESTが公開するのは関数なんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「PostgREST」って出てきたら「PostgreSQLの構造と権限を基に、REST APIを提供するサーバー」と思えばだいたいOK!
📖 おまけ:英語の意味
「PostgREST」 = ポストグレスト(製品名)
💬 PostgreSQLとREST APIを結び付けて覚えると分かりやすい名前だよ。データベース全体を無条件に公開するという意味ではないんだ。

参考資料

← 用語集にもどる