SaaS / FaaSSupabase

SupabaseのData APIで DBの情報をREST APIから直接取得する

Supabaseでは、直接DBにアクセスするためのAPIが利用できるとの情報を耳にしました。テスト用のテーブルを作成し、データを投入しました。また、Row Level Securityを有効化するための手順も確認しました。準備ができたので、Data APIを使用してデータを取得しました。取得したデータは、指定の形式で取得できました。

広告ここから
広告ここまで

あまりユースケースなどのイメージがあるわけではないのですが、どうやらSupabase上のDBに直接アクセスするためのAPIがあるらしいと耳にしたので、ひとまず試してみました。

テスト用のテーブルを用意する

ドキュメントを参考にテーブルとデータを用意しましょう。

create table todos (
  id serial primary key,
  task text
);

複数のデータを登録しておきます。

insert into todos (task)
values
  ('Create tables'),
  ('Enable security'),
  ('Add data'),
  ('Fetch data from the API');

Table Editorでデータが投入されていることを確認しておきます。

Row Level Securityをオンにする

Table Editorでtodosテーブルをみると、Warningが出ています。これはRow Level Securityが有効化されていないためらしいです。RLSについてはまだあまり把握できていないのですが、この手のサジェスチョンは従っておくのが経験上吉だとおもっているので、有効化しておきましょう。

-- Turn on security
alter table "todos"
enable row level security;

-- Allow anonymous access
create policy "Allow anonymous access"
  on todos
  for select
  to anon
  using (true);

このクエリを実行すると、警告が消えます。

Data APIからテーブルのデータを取得する

データの準備ができたので、早速APIを叩いてみます。Project REF.supabase.co/rest/v1/{TABLE_NAME}でGETリクエストが出せます。

curl 'https://<PROJECT_REF>.supabase.co/rest/v1/todos' \
-H "apikey: <ANON_KEY>" \
-H "Authorization: Bearer <ANON_KEY>"

今回の例ですと、このようなレスポンスが取れました。

[
  {
    "id": 1,
    "task": "Create tables"
  },
  {
    "id": 2,
    "task": "Enable security"
  },
  {
    "id": 3,
    "task": "Add data"
  },
  {
    "id": 4,
    "task": "Fetch data from the API"
  }
]

参考にした記事

ブックマークや限定記事(予定)など

WP Kyotoサポーター募集中

WordPressやフロントエンドアプリのホスティング、Algolia・AWSなどのサービス利用料を支援する「WP Kyotoサポーター」を募集しています。
月額または年額の有料プランを契約すると、ブックマーク機能などのサポーター限定機能がご利用いただけます。

14日間のトライアルも用意しておりますので、「このサイトよく見るな」という方はぜひご検討ください。

広告ここから
広告ここまで

Related Category posts