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
Vytvořte API klíč
V Nastavení → API klíče. Zobrazí se jednou, uložte ho do proměnné prostředí na serveru.
- 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
Ošetřete stránkování
Jeden požadavek vrátí nejvýš 100 odpovědí. Podle totalPages procházejte další stránky.
- 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
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 →