Decoupled Drupal – co wziąć pod uwagę korzystając z JSON:API?

Opublikowany: 2018-09-12

„Najbardziej przekonującą zaletą Drupala z pierwszym interfejsem API nie jest sposób, w jaki neguje on funkcje prezentacji Drupala, ale sposób, w jaki umożliwia on możliwości systemu CMS do obsługi wielu aplikacji i urządzeń”. — Jason Enter, kierownik ds. usług technicznych, Acquia.

Związek między treścią a kodem nie jest już zdrowy. Warstwa prezentacji skierowana do konsumenta nie jest już tak usunięta z warstwy edytora treści, jak kiedyś, głównie z powodu nowych interaktywnych doświadczeń udostępnianych konsumentom za pośrednictwem aplikacji.

Nowoczesne frameworki i języki programowania pozwalają na elastyczność w tworzeniu stosu zarządzania treścią. Tak więc oddzielenie treści od kodu stało się powszechną praktyką w ostatnich latach, a Drupal był jednym z pierwszych jej użytkowników. Dowiedzmy się więcej o oddzielonej architekturze Drupala i Drupala 8.

Co to jest Drupal oddzielony?

Cóż, odsprzęgnięty Drupal brzmi „fajnie”, prawda? Wygląda na to, że wszyscy o tym mówią, więc musi to być lepsze, łatwiejsze rozwiązanie, prawda? Być może. Oferując szeroki wachlarz korzyści, strategia ta, znana również jako „bezgłowy drupal”, służy do wykorzystywania Drupala wyłącznie jako systemu zarządzania treścią bez warstwy prezentacyjnej. tzn. istnieje tylko treść i administracyjny interfejs użytkownika, bez publicznych motywów i innych szablonów, co naraża API dla innych aplikacji.

Ale być może najważniejszym pytaniem, które masz na myśli, byłoby to, jakie są zalety oddzielonej architektury Drupala?

Architektura bezgłowa świetnie sprawdza się w zmniejszaniu lub całkowitym wyeliminowaniu większości problemów, które są częścią monolitycznych systemów zarządzania treścią.

Uproszczone aktualizacje: Oddzielna architektura zapewnia, że ​​aktualizacja CMS nie wpływa na warstwę prezentacji, dzięki czemu nie musisz ponownie konfigurować po każdej aktualizacji CMS.

Lepsza koncentracja: Ogromna zaleta dla programistów, dzięki architekturze oddzielonej, muszą oni tylko martwić się o skonfigurowanie swojej części stosu. Deweloperzy back-endu nie muszą się martwić o kompilację CSS, a faceci od front-endu nie muszą drapać się w głowę w związku z instalacją kompozytora.

Łatwe rozwiązywanie problemów: bezgłowa architektura jest skonstruowana w taki sposób, że platforma składa się z mniejszych, dyskretnych części, a nie z jednej gigantycznej aplikacji. To znacznie ułatwia lokalizowanie błędów i rozwiązywanie ich problemów.

Lepsza wydajność: gdy oba zespoły pracują jednocześnie w oderwaniu od siebie, opracowywanie nowych funkcji może przebiegać płynnie bez wpadania na ściany. To z kolei poprawia ogólną wydajność platformy.

Łatwe rozwiązywanie problemów: bezgłowa architektura jest skonstruowana w taki sposób, że platforma składa się z mniejszych, dyskretnych części, a nie z jednej gigantycznej aplikacji. To znacznie ułatwia lokalizowanie błędów i rozwiązywanie ich problemów.

JSON-API

Jak ważny jest JSON:API dla stron internetowych w systemie Decoupled Drupal?

Potężne architektury, responsywne i przyjazne dla użytkownika aplikacje internetowe są wynikiem frameworków JavaScript, które stały się dość popularne od czasu ich wprowadzenia na początku 2010 roku. Wraz ze wzrostem liczby osób decydujących się na korzystanie z urządzeń mobilnych w celu uzyskania dostępu do treści cyfrowych, budowanie natywnych aplikacji dla strona internetowa ma sens.

Zdając sobie sprawę z tego potencjału, Drupal 8 dodał wsparcie dla budowania RESTful API w rdzeniu. Ma to jednak swoje wady, ponieważ usługi RESTful rdzenia Drupala nie zapewniają solidnych rozwiązań po wyjęciu z pudełka.

Tradycyjna implementacja REST API zwykle napotyka pewien zestaw problemów:

  • Cały wykres danych potrzebny do skonstruowania widoku u konsumenta będzie wymagał zbyt wielu żądań.
  • Znaczący wzrost odpowiedzi zwracający wszystkie pola i relacje każdego podmiotu.
  • Znajdowanie treści na podstawie atrybutów danych jednostek jest zadaniem herkulesowym.
  • Wersjonowanie interfejsu API, aby konsumenci i implementacje zaplecza mogły iterować osobno.

Aby rozwiązać te problemy, istnieje kilka specyfikacji, z których JSON:API jest jedną z najbardziej znanych.

Co to jest JSON?

JSON — Java Script Object Notation to jeden z najpopularniejszych formatów danych do wymiany danych za pośrednictwem usług internetowych. Przede wszystkim zastępując XML, lekka i łatwa do odczytania natura JSON sprawia, że ​​jest to całkiem niesamowite.

Dlaczego warto rozważyć implementację specyfikacji JSON:API?

Zestaw wstępnie zdefiniowanych standardów i konwencji, które opisują, w jaki sposób interfejsy API powinny być obsługiwane przez serwery i wykorzystywane przez klientów w celu wymiany danych w formacie JSON, specyfikacje JSON:API oferują kluczowe korzyści po wdrożeniu:

Wydajność: Specyfikacje JSON:API są zaprojektowane w taki sposób, aby ograniczyć liczbę żądań i rozmiar danych do minimum.

Produktywność: Tak często zdarza się, że jako programista nie masz pewności, jakie najlepsze praktyki należy zastosować podczas tworzenia interfejsu API. Z drugiej strony, przestrzegając zestawu standardów, wychodzisz z dylematu.

Spójność: specyfikacje oferują spójną strukturę i zachowanie podczas tworzenia aplikacji.

Wsparcie: specyfikacje są powszechnie akceptowane, a implementacje wymagane dla bibliotek klienckich można znaleźć dla prawie każdego frameworka i języka programowania.

Moduł JSON:API

Moduł JSON:API dla Drupala 8 to implementacja specyfikacji JSON:API. Po zainstalowaniu i włączeniu modułu JSON:API, REST API jest od razu dostępne dla każdego typu w ramach implementacji Drupala. Dzięki przechodzeniu przez typy jednostek i pakiety w taki sposób, że może generować adresy URL, pod którymi może uzyskiwać dostęp do jednostek i manipulować nimi, moduł osiąga to osiągnięcie.

Podczas gdy JSON API jest dość złożoną specyfikacją, z którą trzeba sobie poradzić, moduł JSON API wykonuje świetną robotę w uproszczeniu procesu jego używania, szczególnie dla wczesnych deweloperów Drupala.

Jednak stosując się do podejścia „mniej konfiguracji” i gotowości produkcyjnej, moduł JSON:API ma zestaw własnych wad.

Wsparcie: Moduł JSON:API jest w całości oparty na encjach, co oznacza, że ​​jest skoncentrowany wokół typów encji i pakietów Drupala. Jednak moduł nie obsługuje ani nie obsługuje danych niestandardowych.

Niepowodzenie zadania: Ponieważ moduł jest oparty na encji i nie może obsługiwać danych niestandardowych, nie wykonuje również innych zadań, takich jak logowanie, tworzenie sesji lub wylogowanie użytkownika itp.

Predefiniowana struktura: Moduł JSON:API przedstawia predefiniowaną strukturę ładunku, której nie można modyfikować. Po włączeniu modułu w Drupalu spójnej struktury ładunku nie można zmienić ani dostosować do zmian wymagań dostawcy

Krzywa uczenia się: Ponieważ moduł JSON:API ujawnia wszystkie atrybuty encji, może mieć złożony charakter. Przy dość stromej krzywej uczenia się, JSON:API może nie być filiżanką herbaty dla każdego.

API JSON

Jak pobrać i zainstalować moduł JSON:API?

AKTUALIZACJA: Od stycznia 2020 r. moduł JSON:API jest teraz częścią Drupal Core (dużo po opublikowaniu tego bloga). Dlatego zainstalowanie go nie wymaga wykonania kolejnego kroku.

Mając zależność od modułu serializacji, należy go najpierw włączyć przed pobraniem i zainstalowaniem JSON:API. Można to zrobić za pomocą dowolnej z następujących metod:

Korzystanie z Drush

 $ drush en serialization -y $ drush dl jsonapi && drush en jsonapi -y

Korzystanie z konsoli Drupala

 $ drupal module:install serialization $ drupal module:download jsonapi && drupal module:install jsonapi