【ポストグレスト】

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の橋渡しをそのままやってくれるんだ。
← 用語集にもどる