【ポストグレスト】

PostgREST とは?

💡 PostgreSQLがあれば、コードゼロでREST APIが立ち上がる魔法のサーバー
📌 このページのポイント
PostgREST — PostgreSQL をそのまま REST API に PostgreSQL テーブル / ビュー ストアド関数 Row Level Security PostgREST スタンドアロン サーバー JWT 認証対応 REST エンドポイント GET /users POST /users PATCH /users?id=1 DELETE /users?id=1 POST /rpc/my_func 接続 自動生成 コードゼロで REST API が立ち上がる
PostgREST が PostgreSQL のテーブル・関数を REST API として公開するしくみ
ひよこ ひよこ

PostgRESTって、コードを書かなくてもAPIが作れるって本当なの?

ペンギン先生 ペンギン先生

本当だよ!PostgreSQLデータベースにPostgRESTを向けると、テーブルビューが自動でREST APIエンドポイントになるんだ。GETで一覧取得、POSTで追加、PATCHで更新、DELETEで削除ができるよ。

ひよこ ひよこ

すごい!でも誰でもデータにアクセスできちゃうのは危なくないの?

ペンギン先生 ペンギン先生

そこが上手くできていてね、PostgreSQL自身のロール(ユーザー権限)とRow Level Security(行単位のアクセス制御)をそのままAPI認可に使うんだよ。DBの設定がそのままセキュリティポリシーになるんだ。

ひよこ ひよこ

JWTっていう言葉も出てくるけど、どう関係するの?

ペンギン先生 ペンギン先生

クライアントがJWTトークンをリクエストヘッダーに付けると、PostgRESTがトークンを検証してDBのロールに紐づけてくれるよ。「このユーザーはreaderロール」みたいに制御できるんだ。

ひよこ ひよこ

Supabaseというサービスで使われているって聞いたけど?

ペンギン先生 ペンギン先生

そうだよ!SupabaseFirebaseの代替として人気のBaaSで、バックエンドAPIエンジンにPostgRESTを採用しているんだ。Supabaseを使うと裏側でPostgRESTが動いているよ。

ひよこ ひよこ

どんな場面でPostgRESTを選ぶといいの?

ペンギン先生 ペンギン先生

プロトタイプや内部ツール、データ基盤の公開APIに向いているよ。複雑なビジネスロジックはストアド関数に書けばPostgREST経由で呼び出せるから、うまく設計すればちゃんとした本番APIとしても使えるんだ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「PostgREST」って出てきたら「PostgreSQLテーブルをそのままREST APIにするサーバー」と思えればだいたいOK!
📖 おまけ:英語の意味
「PostgREST」 = PostgreSQL + REST
💬 「PostgreSQL」と「REST」を組み合わせた造語だよ。「ポストグレスにRESTを足したもの」というシンプルな名前の通り、DBとAPIの橋渡しをそのままやってくれるんだ。
← 用語集にもどる