Jak bezpečně zobrazit odpovědi z formuláře na webu

Typický požadavek: „chci na webu ukázat seznam přihlášených“ nebo „potřebuju odpovědi ve své administraci“. Jde to přes REST API — a rozdíl mezi bezpečným a nebezpečným řešením je jediná věc: kde je uložený API klíč.

Základní pravidlo

API klíč patří na server, nikdy do JavaScriptu ve stránce. Když klíč vložíte do frontendového kódu, kdokoli si ho zobrazí ve zdroji stránky — a stáhne si všechny odpovědi ze všech vašich formulářů, ne jen ty, které chcete ukázat.

Správný tok je: prohlížeč se ptá vašeho serveru → váš server se s klíčem zeptá Gatherina → váš server vrátí jen ta pole, která mají být veřejná.

Serverová část

Načtení odpovědí na vašem backendu (Node.js):

const res = await fetch(
  `https://gatherino.com/api/v1/submissions?formId=${FORM_ID}&limit=100`,
  { headers: { Authorization: `Bearer ${process.env.GATHERINO_KEY}` } }
);
const { items, total, totalPages } = await res.json();

// Zveřejněte jen vybraná pole — nikdy celý objekt data
const publicList = items.map((s) => ({
  name: s.data[FIELD_NAME_ID],
  city: s.data[FIELD_CITY_ID],
}));

Postup

  1. 1

    Vytvořte API klíč

    V Nastavení → API klíče. Zobrazí se jednou, uložte ho do proměnné prostředí na serveru.

  2. 2

    Zjistěte ID polí

    Detail formuláře přes API vrátí u každého pole ID i popisek. Mapování si uložte — ID se nemění.

  3. 3

    Ošetřete stránkování

    Jeden požadavek vrátí nejvýš 100 odpovědí. Podle totalPages procházejte další stránky.

  4. 4

    Přidejte cache

    Nevolejte API při každém načtení stránky. Stačí kešovat na pár minut — ušetříte i sobě.

  5. 5

    Filtrujte, co publikujete

    Vyberte konkrétní pole. Nikdy neposílejte do prohlížeče celý objekt odpovědi.

Osobní údaje: seznam jmen na veřejném webu je zveřejnění osobních údajů. Ujistěte se, že k tomu máte právní titul, nebo publikujte jen údaje, se kterými respondent počítá (například jméno u veřejné startovní listiny, o které víte předem).

Časté otázky

Můžu volat API přímo z prohlížeče?

Ne s vaším API klíčem. Klíč by byl veřejný. Vždy přes vlastní server.

Proč jsou v datech klíče jako field_1778…?

To jsou ID polí formuláře. Popisky získáte z detailu formuláře.

Jak často mám data načítat?

Podle potřeby — u seznamu přihlášených stačí jednou za pár minut. Pro okamžité reakce použijte webhook.

Zvládne API diakritiku?

Ano, vše je v UTF-8.

Souvisí s tímto

Vyzkoušejte Gatherino zdarma

Free plán: 3 formuláře a 100 odpovědí měsíčně. Bez kreditky, data v EU.

Začít zdarma →