Co se pokazí, když migrujete MySQL do PostgreSQL
Dalším krokem je řetězení požadavků. Často potřebujete nejprve vytvořit záznam a teprve potom s ním pracovat. V záložce Tests můžete z odpovědi vytáhnout hodnotu a uložit ji do proměnné. Například po úspěšném přihlášení uložíte token do proměnné a v dalších požadavcích jej použijete v hlavičce Authorization. Tím odpadá ruční kopírování a snižuje se riziko, že zapomenete aktualizovat token po jeho vypršení.
Instalace je přímočará. Vytvořte virtuální prostředí, aktivujte ho a nainstalujte pytest pomocí správce balíčků. Ověření provedete příkazem pytest --version. Testy se ukládají do souborů, jejichž název začíná na test_ nebo končí na _test. Samotné testovací funkce musí mít také prefix test_. pytest je sám najde bez jakékoli registrace. Spuštění je pak otázkou příkazu pytest v kořeni projektu. Pro podrobnější výstup použijte pytest -v, pro zastavení po první chybě pytest -x.
Největší problém nastává u dynamických částí dotazu, které nelze parametrizovat: názvy tabulek, sloupců, směr řazení nebo klauzule LIMIT. Tady parametrizace nefunguje a je potřeba použít whitelist. Uživatel nesmí poslat název sloupce přímo. Aplikace má mít předem daný seznam povolených hodnot a z něj vybrat. Totéž platí pro směr řazení: hodnota musí být buď vzestupně, nebo sestupně, nic jiného se nepřijímá. Pokud se whitelist vynechá a nahradí se kontrolou pomocí regulárního výrazu, útočník často najde cestu, jak filtr obejít.
Praktický postup začíná exportem dat. Z MySQL vytáhněte schéma i data zvlášť, ideálně v režimu, který neobsahuje komentáře specifické pro MySQL a příkazy pro vypnutí kontrol cizích klíčů. Data exportujte jako čisté INSERTy nebo CSV. Při převodu schématu převeďte typy: TINYINT(1) často končí jako BOOLEAN, DATETIME nahraďte TIMESTAMP nebo TIMESTAMPTZ podle toho, zda potřebujete časová pásma. AUTO_INCREMENT nahraďte GENERATED … AS IDENTITY nebo SERIAL. ENUM v PostgreSQL nahraďte vlastním typem nebo tabulkou s číselníkem, jinak narazíte na problémy při změnách hodnot.
Příklady místo odstavců obecných frází Nejužitečnější částí dokumentace jsou konkrétní příklady volání a odpovědí. U každého endpointu uveďte alespoň jeden reálný požadavek s ukázkovými daty a jednu úspěšnou odpověď. Pokud vracíte chybu, přidejte i její podobu — frontend potřebuje vědět, jestli má zobrazit hlášku, přesměrovat, nebo zkusit znovu. Vyhněte se popisům typu „vrátí se objekt uživatele"; vypište pole, jejich typy a to, která jsou nepovinná.
Základní volba stojí mezi jedním sdíleným repozitářem a více repozitáři s centrální konfigurací. Sdílený repozitář znamená, že všechny části projektu leží pohromadě a konfigurační soubory jsou na jednom místě. Výhodou je okamžitá viditelnost změn a jednodušší zavádění nových členů týmu. Nevýhodou je horší izolace: změna v jedné části může nechtěně ovlivnit jinou a nástroje musejí zvládat větší objem dat. U více repozitářů je potřeba vyřešit, odkud se konfigurace bere a jak se synchronizuje.
Dokumentace má být snadno dostupná a ověřitelná. Ideální je stav, kdy si frontend sám vygeneruje klienta nebo si vyzkouší volání proti běžícímu prostředí. Zvažte nástroj, který umí z popisu vytvořit interaktivní náhled, ale nepřidávejte vrstvy jen proto, že jsou moderní. Důležitější je, aby popis odpovídal skutečnému chování a byl na jednom místě.
Mezi časté chyby patří zavádění příliš mnoha pravidel najednou, ponechání starých konfigurací naživu a chybějící dohoda o tom, kdo změny schvaluje. Pokud se konfigurace mění bez kontroly, začne se dřív nebo později rozcházet s realitou. Pomáhá i to, když je konfigurace součástí projektu a ne skrytá v nastavení jednotlivých strojů. Když ji někdo potřebuje upravit, musí být jasné, kam sáhnout a koho se zeptat.
Postman je nástroj, který usnadňuje odesílání HTTP požadavků a kontrolu odpovědí. Mnozí jej používají jen jako „klikací" klient pro rychlé ověření jednoho endpointu. To je v pořádku, ale skutečný přínos začíná ve chvíli, kdy jej nastavíte tak, aby vám šetřil práci při opakovaném testování. Základem je kolekce – logické seskupení požadavků podle domény nebo funkce. Do kolekce si uložte nejen URL a metodu, ale i hlavičky, tělo požadavku a parametry. Bez uložení se příští spuštění neobejde bez ručního přepisování.
Dokumentace REST API není dílo pro frontend, které vznikne na konci projektu. Je to průběžná součást návrhu backendu. Pokud ji začnete psát ve chvíli, kdy je hotový poslední endpoint, už nikdy nebude odpovídat realitě a frontend stejně skončí u čtení zdrojového kódu. Začněte popisovat rozhraní v momentě, kdy se domluvíte na prvním kontraktu.