Czy warto tworzyć API w Strapi (headless CMS)? Pierwsze wrażenia

Artykuł "Czy warto używać Strapi"

Ostatnio zacząłem tworzyć aplikację w React i potrzebowałem API do niej. Z pomocą przyszedł Strapi. Jakie są moje pierwsze przemyślenia na temat Strapi? Czy warto skorzystać z niego? Więcej w artykule.

Co w artykule?

  • krótko o tym czym jest Strapi
  • pierwsze wrażenia po skorzystanie ze Strapiego,
  • najciekawsze funkcje (które rzuciły mi się w oczy),
  • opinia czy warto używać Strapiego

Czym jest Strapi?

https://strapi.io/

Strapi to Headless CMS. To oznacza, że dzięki niemu możesz zbudować swoje własne API bez znajomości backendu. Posiada panel administracyjny, w którym możesz konfigurować typy treści, pola oraz dodawać treści. Do stworzenia pozostaje już tylko część frontendowa w technologii, która Tobie odpowiada. Oczywiście z API może korzystać również backend czy inne serwisy. Aplikacja frontendowa to tylko jedna z możliwości.

Szybka i łatwa instalacja

Strapi szybko się instaluje oraz konfiguruje. Wystarczy kilka kliknięć, aby zobaczyć pierwszy widok czyli panel administracyjny.

Do rozpoczęcia przygody potrzebne jest:

  • baza danych
  • NodeJS

… i to tyle.

Potem wystarczy skonfigurować Strapiego i pojawi się panel administracyjny. Tam można łatwo stworzyć pierwsze typy treści oraz dodać kilka przykładowych artykułów (jeśli stworzyliśmy typ artykuł).

Oficjalny filmik instruktażowy doskonale pokazuje jak szybko można rozpocząć pracę ze Strapim.

Operacje na endpointach czyli CRUD

Każdy endpoint API w Strapi udostępnia szereg podstawowych operacji CRUD (Create Read Update Delete). Dzięki temu zaraz po stworzeniu typu treści możesz już zacząć programować i używać swojego API. Nie musisz tracić czasu na tworzenie CRUDów i możesz poświęcić czas na właściwą część czyli konsumowanie API.

Parametry, filtrowanie w API

Często potrzebne jest, aby otrzymać konkretne informacje z danego endpointu, np. chcę tylko ostatnich dziesięć rekordów lub chcę tylko te, w których data jest w danym przedziale. Strapi daje możliwość pobrania takich danych, dzięki parametrom w których definiujemy wymagania.

/restaurants?_where[0][price_gte]=3&[0][price_lte]=7

W powyższym przykładzie otrzymamy listę restauracji, w której ceny są większe od 3 i mniejsze od 7.

Strapi posiada znaczniej więcej możliwości jeśli chodzi o parametry – filtry, sortowanie, limit, start (od jakiego rekordu ma zacząć – przydatne do paginacji), stan publikacji.

Wiele sposobów autoryzacji

W pakiecie otrzymujemy możliwość skorzystania z integracji autoryzacji wykorzystując wielu dostawców. W dość pokaźnej liście zawiera się m.in. GitHub, Facebook, Google, Twitter, Discord, Twitch. Dla wszystkich integracji odpowiedź z API jest ujednolicona. Istnieje możliwość modyfikacji pól odpowiedzi API użytkownika. Na przykład domyślnie API nie zwraca awatara, ale istnieje możliwość żeby dodać to pole dla wszystkich metod autoryzacji.

https://strapi.io/documentation/developer-docs/latest/plugins/users-permissions.html#providers

Dokumentacja nie jest kompletna

Większość podstawowych rzeczy jest opisana w sposób zrozumiały i kompletny. Inaczej jest w przypadku jeśli chcesz zacząć pisać własne endpointy. Dokumentacja nie opisuje jakie są dostępne zmienne przez co dużo trzeba robić console.log, aby zobaczyć co kryje się pod daną zmienną. Im więcej udziwnień tym więcej przeszkód.

Bardzo dużo możliwości

Jeśli spojrzy się na dokumentacje i zacznie analizować menu po lewej stronie to można dojść do wniosku, że Strapi posiada bardzo dużo możliwości. Powyżej opisałem tylko kilka elementów, które zapadły mi w pamięć po pierwszym użyciu (i stworzeniu pierwszej aplikacji, która korzysta z API).

https://strapi.io/documentation/developer-docs/latest/concepts/customization.html#plugin-extensions

Czy warto skorzystać ze Strapiego?

To zależy. Do każdego pomysłu, potrzeby trzeba podejść indywidualnie i rozważyć wszystkie za i przeciw. Przeanalizuj czego potrzebujesz i sprawdź jakie możliwości udostępnia Strapi. Im więcej rozwiązuje problemów tym lepiej.

Zdecydowanie polecam takie rozwiązanie dla frontendowców, którzy chcą tworzyć aplikacje, ale brakuje im backendu.

Doskonale nadaje się do nauki frontendu i tworzenia aplikacji na własne potrzeby. Szybko stworzysz API i potem zajmiesz się najważniejszym czyli programowaniem aplikacji.

Jako programista frontendu świetnie się przy nim bawiłem. Pozwoliło mi to poszerzyć swoje horyzonty np. publikacja aplikacji na serwerze, korzystanie z GitHub Actions, automatyzacja pewnych procesów. Jestem bardziej świadomy rzeczy, które dzieją się w okół frontendu.

Sprawdź, spróbuj, poznaj. Ode mnie jest okejka.

Komentarze

12 odpowiedzi na „Czy warto tworzyć API w Strapi (headless CMS)? Pierwsze wrażenia”

  1. Awatar Adam
    Adam

    Cześć. Czy w takim przypadku o jakim napisałeś, wykorzystując atthost, wrzucasz wszystkie pliki z repo czy tylko builda? Pytanie może być dziwne ale walczę kilka dni już z tym tematem i zbieram różne sprzeczne informacje a chciałbym w końcu zrobić to prawidłowo. Będę wdzięczny za podpowiedź.

    1. Na serwer wrzucam build oraz pliki z repozytorium (pomijam folder node_modules). Na serwerze dodatkowo instaluje paczki żeby można było odpalić strapi w pliku app.js (zgodnie z instrukcją uruchamiania aplikacji w atthost). Oczywiście należy pamiętać o odpowiedniej konfiguracji bazy danych (prod, dev), odpowiednie dostępny, plik .env jeśli się z niego korzysta. To tak mniej więcej 🙂

      1. Awatar Paweł
        Paweł

        Cześć. Jestem niestety zielony z node’a i nie mogę sobie poradzić z instalacją. Czy mógłbyś dokładniej przybliżyć jak udało Ci się zainstalować Strapi na hostingu Atthost? Również używam tego hostingu lecz instrukcja opisuje jedynie zainstalowanie prostej aplikacji node. Interesuje mnie szczególnie to, jak ma wyglądać plik app.js – Strapi nie ma defaultowo tego pliku więc podejrzewam, że musimy jakoś z jego poziomu odpalić Strapiego… Z innymi aplikacjami do tej pory nie miałem problemu. Z góry dzięki za odpowiedź, pozdrawiam!

        1. Cześć!
          Jesteś na dobrym tropie. Plik app.js musi zawierać kod, który uruchomi aplikację Strapi. Wystarczy zaimportować strapi i następnie go uruchomić za pomocą metody start().

          Kod jest w oficjalnej dokumentacji: https://docs.strapi.io/dev-docs/deployment#2-launch-the-server

          const strapi = require(’@strapi/strapi’);
          strapi(/* {…} */).start();

          Dodatkowo możesz podejrzeć repozytorium mojej aplikacji – https://github.com/pbasiak/flashcards-strapi
          Kod aplikacji jest przestarzały, więc nie wszystko jest aktualne.
          W github/workflows znajdziesz proces budowania aplikacji wraz z folderami, które wykluczałem. Z tego co pamiętam sam build nie wystarczy, ponieważ to node więc kod aplikacji jest istotny żeby wykonywać go w czasie rzeczywistym.

  2. Awatar Wojciech
    Wojciech

    Dobra, pytanko jedno. Chciałbym postawić stronę w oparciu o headless CMS. Potrzebny do tego jest node.js a niestety większość firm hostingowych w PL (tych lepszych) nie oferuje node.js (chyba jedynie z tych większych to nazwa.pl). W związku z tym czy można to zrobić tak że node.js mam u siebie na komputerze, tak samo SQL no i Strapi, a strony statyczne na dowolnym hostingu współdzielonym? Jeśli jest to generator stron statycznych to działa chyba bez stałego dostępu do backendu? Gdy będę chciał zrobić update strony to odpalam node.js na localhost i robię deploy na hosting?

    1. Generator stron statycznych działa bez dostępu do backendu. Wszystkie możliwe podstrony są generowane i nie ma potrzeby wykonywania zapytań do API. Przykładem takiego generatora jest Gatsby. Gatsby wspiera Strapiego (i wiele innych headless CMS). Zachęcam do zajrzenia do dokumentacji.
      Po wygenerowaniu wystarczy skopiować pliki na hosting. W dokumentacji takiego generatora można znaleźć co i gdzie trzeba zrobić.

      Jeśli chodzi o hostingi to się zgadza. Jest mało takich. Ja korzystam z atthost ( https://ref.atthost.pl/?id=6904 ) i on posiada możliwość odpalenia aplikacji nodejs. Ceny raczej normalne :).

      Warto rozważyć skorzystanie z Netflify (https://www.netlify.com) jeżeli projekt jest robiony hobbystycznie. Wtedy jest za darmo 🙂

  3. Awatar Piotr
    Piotr

    Cześć. Na czym wystawiasz strapi ?

    1. Strapi mam na zwykłym hostingu, który obsługuje aplikacje nodejs (aplikacja frontend również na tym samym hostingu).

      1. Awatar Eryk
        Eryk

        A mógłyś powiedzieć, jaki to hosting? 🙂

        1. Korzystam z atthost. Tutaj ref link gdyby ktoś chciał sprawdzić i przy okazji wspomóc 🙂 – https://ref.atthost.pl/?id=6904

          1. Awatar Eryk
            Eryk

            Ok 🙂 A chciałbyś powiedzieć jeszcze w jaki sposób można to tam zdeployować?

          2. AttHost udostępnia instrukcje jak uruchomić aplikację w Node.js pod tym linkiem: https://atthost.pl/help/jak-uruchomic-aplikacje-w-nodejs/
            Mam pomysł na zrobienie artykułu jak postawić taką aplikację (nie tylko strapi), ale jeszcze nie mam konkretnej daty, kiedy powstanie.

Skomentuj devpebe Anuluj pisanie odpowiedzi

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.