Skip to content

Supabase REST API

Supabase SDK

Supabase автоматически генерит эндпойнты для доступа к нашим таблицам. Обращаться к ним можно либо через Supabase SDK.

Установка:

sh
 pnpm add @supabase/supabase-js

Использование:

js
import { createClient } from "@supabase/supabase-js";

// Create a single supabase client for interacting with your database
const supabase = createClient("https://client_id.supabase.co", "public-anon-key");

const { data: product, error } = await supabase
  .from("products")
  .select("*");

const { data, error } = await supabase
  .from("products")
  .insert([
    { some_column: "someValue", other_column: "otherValue" },
  ])
  .select();

const { error } = await supabase
  .from("products")
  .delete()
  .eq("some_column", "someValue");

Supabase REST API

Либо напрямую через HTTP запросы:

sh
curl 'https://client_id.supabase.co/rest/v1/products?select=*' \
-H "apikey: SUPABASE_CLIENT_ANON_KEY" \
-H "Authorization: Bearer SUPABASE_CLIENT_ANON_KEY"

curl -X POST 'https://client_id.supabase.co/rest/v1/products' \
-H "apikey: SUPABASE_CLIENT_ANON_KEY" \
-H "Authorization: Bearer SUPABASE_CLIENT_ANON_KEY" \
-H "Content-Type: application/json" \
-H "Prefer: return=minimal" \
-d '{ "some_column": "someValue", "other_column": "otherValue" }'

curl -X DELETE 'https://client_id.supabase.co/rest/v1/products?some_column=eq.someValue' \
-H "apikey: SUPABASE_CLIENT_ANON_KEY" \
-H "Authorization: Bearer SUPABASE_CLIENT_ANON_KEY"

Мы будем использовать второй способ, - опять же, чтобы не внедрять необязательные зависимости. Плюс, дебажить явные HTTP запросы намного проще.

Доступ через REST API использует библиотеку PostgREST, написанную на Haskell. На её сайте можно ознакомиться с богатым синтаксисом возможных запросов.

Таким образом, на данный момент мы используем Postgres базу данных и PostgREST библиотеку/сервер. От самой Supabase пока что только удобная админка для управления БД.