Další nový web v rámci sítě jilekIT.cz síť webů

Štítek: Strapi

Začínám se Strapi 2

Po rozjetí Headless CMS serveru Strapi se pustíme do zprovoznění GraphQL. Prvním krokem bude vytvoření jednoduchého typu dat, nějaké entity kvůli testování, nastavení práv a následně přidání pluginu pro GraphQL.

Vytvoření typu a dat

Pomocí Content-Type Builderu vytvoříme nový typ. Ten pojmenujeme v mém případě jako „Book“ a vytvoříme jen několik testovacích fieldů: title, author, UUID a description. Vše nastavíme pomocí jednoduchého UI průvodce, který nám se vším pomůže. Viz přiložené screeny:

Po vytvoření typu ještě přidáme nějakou entitu nebo dvě, kvůli testování pluginu pro GraphQL. To uděláme v části Content Manager a v příslušném typu.

Vytvoření uživatele

Obdobně jak jsem přidal data typu Book, přidáme i uživatele. Ten je nutný pro další práci při testování pluginu GraphQL. Při vytváření uživatele nesmíme zapomenout nastavit i roli na Authenticated.

Přiřazení práv k typu

Po vytvoření dat a uživatele ještě musíme nastavit přístup k těmto právům. V sekci Settings -> Roles -> Authenticated můžeme nastavit Permissions k jednotlivým typům. V našem případě půjde o Book kde povolíme všechny akce a uložíme změny.

Teď máme systém připravený na instalaci a vyzkoušení pluginu pro GraphQL.

Instalace a test pluginu GraphQL

Plugin nainstalujeme jednoduše pomocí následujícího příkazu a server znovu spustíme:

npm run strapi install graphql

Po instalaci a spuštění serveru si zobrazíme grafické rozhraní GraphQL na adrese /graphql, konkrétně pro defaultní port bude adresa vypadat následovně http://localhost:1337/graphql . Před jakoukoli prací se ale musíme přihlásit, což uděláme následujícím dotazem. Jen upozorňuji že do GraphQL se nepřihlašujete účtem jako do administrace Strapi ale uživatele vytvořeným dříve v Content Manageru Strapi.

Po přihlášení dostanete jwt token, který je nutné vložit do hlavičky požadavků GraphQL aby je server dokázal authorizovat. To provedeme jednoduše vložením JSONu do části HTTP HEADERS ve spodní části GraphQL toolu. JSON bude vypadat přibližně následovně, kde za ***JWT*** vložte získaný token po přihlášení. Upozorňuji že za slovem Bearer následuje mezera než se vkládá samotný token

{"Authorization": "Bearer ***JWT***"}

Nyní již vyzkoušíme jednoduché query na Books s autorizací pomocí hlavičky.

Začínám se Strapi 1

Instalace strapi a napojení na postgresql

Na Strapi jsem narazil náhodou v jedné diskuzi. Byl jsem k tomuto přístupu lehce skeptický ale řekl jsem si že jej vyzkouším a nadchl mě. Proto se rád pondělím s ostatními a hlavně se svým starším (kéž by moudřejším) já o to, jak Strapi nainstalovat a nastat tak, abych jej mohl během chvíle použít.

Instalace

Postup instalace nalezneme v poměrně dobře zpracované dokumentaci na adrese https://docs.strapi.io/. Konkrétně na této stránce https://docs.strapi.io/developer-docs/latest/setup-deployment-guides/installation.html .

Protože Strapi jen zkouším omezím se pouze na CLI instalaci pomocí npx příkazu. Nahradíme podle potřeby a skutečnosti název projektu za **my-project**

npx create-strapi-app@latest **my-project**

Při instalaci vyberu doporučenou možnost Quickstart. V případě zájmu si s jednotlivými možnostmi můžeme hrát později 🙂

Po ‚odklikání‘ možností a celkovém dokončení instalace již spustíme server a vytvoříme admin účet. Ten se buď spustí sám a nebo jej spustíme ručně následujícími příkazy:

cd **my-projekt**
npm run develop

Poté se mi otevře jednoduchý formulář, který vyplním a vytvořím tak admin uživatele.

Po vyplnění formuláře se již přihlásíme do systému Strapi, který vypadá nějak takto:

Připojení k databázi postgresql

Po instalaci serveru jsem řešil, jak jej nastavit tak, aby mi data ukládal do databáze PostgreSQL. Na to jsem hned v dokumentaci našel stránku, která toto řeší https://docs.strapi.io/developer-docs/latest/setup-deployment-guides/configurations/required/databases.html.

Nastavení databáze vypadalo velice jednoduše, jen jako editace konfiguračního souboru ./config/database.js. Bohužel mi z dokumentace nebylo zcela jasné, jak má vypadat tento konfigurační objekt vypadat pro moje potřeby. Po několika pokusech o nastavení jsem došel k funkční konfiguraci. Nebudu ale přebíhat.

Vytvoření databáze

Před samotným napojením si musíme vytvořit novou databázi (případně pokud nemáme tak nainstalovat databázový stroj pro PostgreSQL). Pro vytvoření databáze jsem využil tool PGAdmin, kde jsem si nejdříve vytvořil nového uživatele a poté databázi, ke které měl uživatel odpovídající práva.

Připojení databáze – editace konfiguračního souboru

Konfigurační soubor ./config/database.js upravíme aby odpovídal následujícímu objektu. Pokud máte umístěnou databázi jinde nebo je její jméno či uživatel jiný, příklad upravte odpovídajícím způsobem.

module.exports = ({ env }) => ({ 	
  connection: {
    client: 'postgres',
    connection: {
      host: env('DATABASE_HOST', '127.0.0.1'),
      port: env.int('DATABASE_PORT', 5432),
      database: env('DATABASE_NAME', 'strapi_db'),
      user: env('DATABASE_USERNAME', 'strapi_test'),
      password: env('DATABASE_PASSWORD', 'strapi_test'),
      schema: env('DATABASE_SCHEMA', 'public'), // Not required
      ssl: false,
      /* *Tato syntaxe mi na Windows z nějakého důvodu nefungovala* {
        rejectUnauthorized: env.bool('DATABASE_SSL_SELF', false), // For self-signed certificates
      },*/
    },
    debug: false,
  },
});

Po úpravě souboru se server buď automaticky restartuje a nebo jej restartujeme ručně

npm run develop

Po restartování se pravděpodobně v konzoli zobrazí chybová hláška, která upozorňuje na to, že Knex (databázový interface) nemá doinstalovaný module pro PostgreSQL. Je přiložený i příkaz pro instalaci, který chybějící závislost doinstaluje:

npm install pg --save

Poté znovu server spustíme a vytvoříme admin uživatele tak, jako dříve.

© 2026 Blog jilekIT

Šablonu vytvořil Anders NorenNahoru ↑