SlideShare a Scribd company logo
1 of 30
Download to read offline
REST API w Drupalu
działanie i definicja własnych
endpointów
Mariusz Andrzejewski
Agenda
● Wprowadzenie
● Działanie REST i REST UI w Drupalu
● Przykład użycia
● Definiowanie własnego resource pluginu
@droptica www.droptica.pl
Wprowadzenie
Co to jest REST API
● REST – Representational State Transfer
● Styl architektury opartej o reguły, w których opisane
są zasoby zdefiniowane w systemie
● Zaproponowany przez Roya Fieldinga w 2000 roku
● Wykorzystuje metody HTTP (na ogół 5 najczęściej
używanych - GET, POST, PUT, PATCH, DELETE)
● Dane do komunikacji najczęściej wykorzystywane w
formacie JSON (kilka standardów JSON API, HAL,
JSEND, OData)
www.droptica.pl
@droptica
Źródło: https://www.sqlshack.com/create-rest-apis-in-python-using-flask/
Przydatne narzędzia
www.droptica.pl
@droptica
Potrzebne moduły
www.droptica.pl
@droptica
https://www.drupal.org/project/restui
● Moduły core - min. RESTful Web Services i
Serialization
● Moduł contrib - RESTUI
Działanie REST & REST UI
REST
● REST (RESTful Web Services) - dostarcza mechanizmy dostępu do encji i innych źródeł danych z Drupala jako
RESTful web API
● Pełna dokumentacja: https://www.drupal.org/docs/8/core/modules/rest
● Najważniejsze mechanizmy dostarczane z rest:
○ Gotowa obsługa endpointów dla wszystkich encji z użyciem parametru _format
○ Now typ pluginu - Resource opisany w DrupalrestAnnotationRestResource
○ Gotowe pluginy do modułu views (display, row, style)
www.droptica.pl
@droptica
Jak to działa w Drupalu
www.droptica.pl
@droptica
Źródło: https://www.specbee.com/blogs/exposing-your-api-in-drupal-8-brief-tutorial
HAL VS JSON API
www.droptica.pl
@droptica
http://droopler.localhost/node/1?_format=hal_json http://droopler.localhost/node/1?_format=json
RESTUI
● RESTUI - dostarcza interfejs
graficzny (formularze) do zarządzania
modułem REST
● Możliwy wybór dostępnych metod
HTTP, akceptowanych formatów i
metod autentykacji
● Aż dziwne, że nie ma go w core...
www.droptica.pl
@droptica
REST API
Przykład tworzenia noda
www.droptica.pl
@droptica
www.droptica.pl
@droptica
KABOOOOOM!
www.droptica.pl
@droptica
REST API
+ Views
www.droptica.pl
@droptica
● REST Export - views wizard plugin
● Oferowany przez moduł Views
● Dostępny tylko jeśli moduł rest jest włączony
www.droptica.pl
@droptica
www.droptica.pl
@droptica
REST API
Własny zasób
(Resource Plugin)
Własny zasób, a na co to komu?
Tworzenie własnego zasobu z wykorzystaniem resource pluginu to stosunkowo prosta
sprawa. Pełną dokumentację znajdziemy tutaj:
https://www.drupal.org/docs/drupal-apis/restful-web-services-api/custom-rest-resources
Kiedy się przydaje?
● w przypadku tworzenia własnego API
● wystawianie nietypowych danych takich jak np. konfiguracje, dane nie pochodzące
z encji, czy listingów nie dających się wyświetlić np. z wykorzystaniem modułu
views
www.droptica.pl
@droptica
Tworzymy własny moduł
www.droptica.pl
@droptica
● drush en d_rest_resource -y && drush cr
Definiujemy nowy plugin
www.droptica.pl
@droptica
Kroki do wykonania:
● Utworzenie nowej klasy w katalogu
src/Plugin/rest/resource
● Rozszerzamy klasę bazową
DrupalrestPluginResourceBase
● Opisujemy naszą klasę adnotacjami typu
@RestResource
www.droptica.pl
@droptica
Mam pusty plugin, co robić, jak żyć?
www.droptica.pl
@droptica
● Samo utworzenie klasy pluginu, bez
konkretnych metod jeszcze niestety nic nam nie
daje. Plugin jest wykrywany ale nie ma dodanej
obsługi żadnej z metod HTTP
● Dodajmy na początek metodę GET
● Każda z implementowanych metod musi
zwracać nowy obiekt typu
DrupalrestResourceResponse
● Na koniec czyścimy cache ;-)
● Teraz nasz plugin jest także konfigurowalny w
REST UI
www.droptica.pl
@droptica
www.droptica.pl
@droptica
Konkurs :)
Pytania?
Dziękuję za uwagę
Imię i Nazwisko autora
mariusz.andrzejewski@droptica.pl
Mariusz Andrzejewski
KARIERA.DROPTICA.PL
WWW.DROPTICA.PL

More Related Content

Similar to Rest API w Drupalu - działanie i definicja własnych endpointów [PL]

Wprowadzenie do WP-API
Wprowadzenie do WP-APIWprowadzenie do WP-API
Wprowadzenie do WP-APITomasz Dziuda
 
WP-API - teoria i praktyka - WordUp Łódź #4
WP-API - teoria i praktyka - WordUp Łódź #4WP-API - teoria i praktyka - WordUp Łódź #4
WP-API - teoria i praktyka - WordUp Łódź #4Tomasz Dziuda
 
WP-API - teoria i praktyka - WordUp Trójmiasto #2
WP-API - teoria i praktyka - WordUp Trójmiasto #2WP-API - teoria i praktyka - WordUp Trójmiasto #2
WP-API - teoria i praktyka - WordUp Trójmiasto #2Tomasz Dziuda
 
Podstawy programowania w Drupalu - Drupal idzie na studia - Jarosław Sobiecki
Podstawy programowania w Drupalu - Drupal idzie na studia - Jarosław SobieckiPodstawy programowania w Drupalu - Drupal idzie na studia - Jarosław Sobiecki
Podstawy programowania w Drupalu - Drupal idzie na studia - Jarosław SobieckiGrzegorz Bartman
 
Encje w drupalu - DrupalCamp Wroclaw 2015
Encje w drupalu - DrupalCamp Wroclaw 2015Encje w drupalu - DrupalCamp Wroclaw 2015
Encje w drupalu - DrupalCamp Wroclaw 2015Grzegorz Bartman
 
Dlaczego Twoja kolejna aplikacja powinna bazować na platformie Drupal?
Dlaczego Twoja kolejna aplikacja powinna bazować na platformie Drupal?Dlaczego Twoja kolejna aplikacja powinna bazować na platformie Drupal?
Dlaczego Twoja kolejna aplikacja powinna bazować na platformie Drupal?Grzegorz Bartman
 
Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski, N...
Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski, N...Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski, N...
Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski, N...Grupa Unity
 
Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski - ...
Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski - ...Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski - ...
Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski - ...Intratic
 
Kainos Tech Space #1 : DevOps : Pawel Chmielinski - Dobre praktyki przy pisan...
Kainos Tech Space #1 : DevOps : Pawel Chmielinski - Dobre praktyki przy pisan...Kainos Tech Space #1 : DevOps : Pawel Chmielinski - Dobre praktyki przy pisan...
Kainos Tech Space #1 : DevOps : Pawel Chmielinski - Dobre praktyki przy pisan...Kainos Polska
 
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014Grzegorz Bartman
 
Struktura i własności systemu zarządzania treścią Drupal
Struktura i własności systemu zarządzania treścią DrupalStruktura i własności systemu zarządzania treścią Drupal
Struktura i własności systemu zarządzania treścią DrupalGrzegorz Bartman
 
Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010Natalia Stanko
 
JSON, REST API
JSON, REST APIJSON, REST API
JSON, REST API3camp
 
20060416 Azure Boot Camp 2016- Azure Data Lake Storage and Analytics
20060416   Azure Boot Camp 2016- Azure Data Lake Storage and Analytics20060416   Azure Boot Camp 2016- Azure Data Lake Storage and Analytics
20060416 Azure Boot Camp 2016- Azure Data Lake Storage and AnalyticsŁukasz Grala
 
Budowa poprawnego i intuicyjnego api REST HATEOAS devfest@2013
Budowa poprawnego i intuicyjnego api REST HATEOAS devfest@2013Budowa poprawnego i intuicyjnego api REST HATEOAS devfest@2013
Budowa poprawnego i intuicyjnego api REST HATEOAS devfest@2013Mateusz Stępniak
 
Budowa RESTowego api w oparciu o HATEOAS
Budowa RESTowego api w oparciu o HATEOASBudowa RESTowego api w oparciu o HATEOAS
Budowa RESTowego api w oparciu o HATEOASMateusz Stępniak
 
Single Page Applications przy wykorzystaniu REST
Single Page Applications przy wykorzystaniu RESTSingle Page Applications przy wykorzystaniu REST
Single Page Applications przy wykorzystaniu REST3camp
 
HYC - Angular stań się kanciastym
HYC - Angular stań się kanciastymHYC - Angular stań się kanciastym
HYC - Angular stań się kanciastymDariusz Jagieło
 
PLNOG 5: Janusz Dziemidowicz - OpenSocial w nk.pl
PLNOG 5: Janusz Dziemidowicz - OpenSocial w nk.pl PLNOG 5: Janusz Dziemidowicz - OpenSocial w nk.pl
PLNOG 5: Janusz Dziemidowicz - OpenSocial w nk.pl PROIDEA
 

Similar to Rest API w Drupalu - działanie i definicja własnych endpointów [PL] (20)

Wprowadzenie do WP-API
Wprowadzenie do WP-APIWprowadzenie do WP-API
Wprowadzenie do WP-API
 
WP-API - teoria i praktyka - WordUp Łódź #4
WP-API - teoria i praktyka - WordUp Łódź #4WP-API - teoria i praktyka - WordUp Łódź #4
WP-API - teoria i praktyka - WordUp Łódź #4
 
WP-API - teoria i praktyka - WordUp Trójmiasto #2
WP-API - teoria i praktyka - WordUp Trójmiasto #2WP-API - teoria i praktyka - WordUp Trójmiasto #2
WP-API - teoria i praktyka - WordUp Trójmiasto #2
 
Podstawy programowania w Drupalu - Drupal idzie na studia - Jarosław Sobiecki
Podstawy programowania w Drupalu - Drupal idzie na studia - Jarosław SobieckiPodstawy programowania w Drupalu - Drupal idzie na studia - Jarosław Sobiecki
Podstawy programowania w Drupalu - Drupal idzie na studia - Jarosław Sobiecki
 
Encje w drupalu - DrupalCamp Wroclaw 2015
Encje w drupalu - DrupalCamp Wroclaw 2015Encje w drupalu - DrupalCamp Wroclaw 2015
Encje w drupalu - DrupalCamp Wroclaw 2015
 
Dlaczego Twoja kolejna aplikacja powinna bazować na platformie Drupal?
Dlaczego Twoja kolejna aplikacja powinna bazować na platformie Drupal?Dlaczego Twoja kolejna aplikacja powinna bazować na platformie Drupal?
Dlaczego Twoja kolejna aplikacja powinna bazować na platformie Drupal?
 
Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski, N...
Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski, N...Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski, N...
Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski, N...
 
Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski - ...
Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski - ...Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski - ...
Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski - ...
 
Kainos Tech Space #1 : DevOps : Pawel Chmielinski - Dobre praktyki przy pisan...
Kainos Tech Space #1 : DevOps : Pawel Chmielinski - Dobre praktyki przy pisan...Kainos Tech Space #1 : DevOps : Pawel Chmielinski - Dobre praktyki przy pisan...
Kainos Tech Space #1 : DevOps : Pawel Chmielinski - Dobre praktyki przy pisan...
 
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
 
Struktura i własności systemu zarządzania treścią Drupal
Struktura i własności systemu zarządzania treścią DrupalStruktura i własności systemu zarządzania treścią Drupal
Struktura i własności systemu zarządzania treścią Drupal
 
Sql day2015 fts
Sql day2015 ftsSql day2015 fts
Sql day2015 fts
 
Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010
 
JSON, REST API
JSON, REST APIJSON, REST API
JSON, REST API
 
20060416 Azure Boot Camp 2016- Azure Data Lake Storage and Analytics
20060416   Azure Boot Camp 2016- Azure Data Lake Storage and Analytics20060416   Azure Boot Camp 2016- Azure Data Lake Storage and Analytics
20060416 Azure Boot Camp 2016- Azure Data Lake Storage and Analytics
 
Budowa poprawnego i intuicyjnego api REST HATEOAS devfest@2013
Budowa poprawnego i intuicyjnego api REST HATEOAS devfest@2013Budowa poprawnego i intuicyjnego api REST HATEOAS devfest@2013
Budowa poprawnego i intuicyjnego api REST HATEOAS devfest@2013
 
Budowa RESTowego api w oparciu o HATEOAS
Budowa RESTowego api w oparciu o HATEOASBudowa RESTowego api w oparciu o HATEOAS
Budowa RESTowego api w oparciu o HATEOAS
 
Single Page Applications przy wykorzystaniu REST
Single Page Applications przy wykorzystaniu RESTSingle Page Applications przy wykorzystaniu REST
Single Page Applications przy wykorzystaniu REST
 
HYC - Angular stań się kanciastym
HYC - Angular stań się kanciastymHYC - Angular stań się kanciastym
HYC - Angular stań się kanciastym
 
PLNOG 5: Janusz Dziemidowicz - OpenSocial w nk.pl
PLNOG 5: Janusz Dziemidowicz - OpenSocial w nk.pl PLNOG 5: Janusz Dziemidowicz - OpenSocial w nk.pl
PLNOG 5: Janusz Dziemidowicz - OpenSocial w nk.pl
 

More from Droptica

Business development w praktyce - jak skutecznie sprzedawać software [PL]
Business development w praktyce - jak skutecznie sprzedawać software [PL]Business development w praktyce - jak skutecznie sprzedawać software [PL]
Business development w praktyce - jak skutecznie sprzedawać software [PL]Droptica
 
PHPUnit - jak zacząć pisać testy automatyczne [PL]
PHPUnit - jak zacząć pisać testy automatyczne [PL]PHPUnit - jak zacząć pisać testy automatyczne [PL]
PHPUnit - jak zacząć pisać testy automatyczne [PL]Droptica
 
Komunikacja w zespole projektowym [PL]
Komunikacja w zespole projektowym [PL]Komunikacja w zespole projektowym [PL]
Komunikacja w zespole projektowym [PL]Droptica
 
Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]Droptica
 
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]Droptica
 
Devel - przegląd możliwości modułu [PL]
Devel - przegląd możliwości modułu [PL]Devel - przegląd możliwości modułu [PL]
Devel - przegląd możliwości modułu [PL]Droptica
 
Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]
Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]
Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]Droptica
 
Od środowiska developerskiego do produkcji [PL]
Od środowiska developerskiego do produkcji [PL]Od środowiska developerskiego do produkcji [PL]
Od środowiska developerskiego do produkcji [PL]Droptica
 
Nowości w drupal 9 i 10 [PL]
Nowości w drupal 9 i 10 [PL]Nowości w drupal 9 i 10 [PL]
Nowości w drupal 9 i 10 [PL]Droptica
 
Skuteczna komunikacja w projekcie informatycznym [PL]
Skuteczna komunikacja w projekcie informatycznym [PL]Skuteczna komunikacja w projekcie informatycznym [PL]
Skuteczna komunikacja w projekcie informatycznym [PL]Droptica
 
Droopler: instalacja z użyciem composer i przykład budowy prostej strony firm...
Droopler: instalacja z użyciem composer i przykład budowy prostej strony firm...Droopler: instalacja z użyciem composer i przykład budowy prostej strony firm...
Droopler: instalacja z użyciem composer i przykład budowy prostej strony firm...Droptica
 
Open social - przegląd możliwości dystrybucji [PL]
Open social - przegląd możliwości dystrybucji [PL]Open social - przegląd możliwości dystrybucji [PL]
Open social - przegląd możliwości dystrybucji [PL]Droptica
 
Mapy i geolokalizacja w Drupalu [PL]
Mapy i geolokalizacja w Drupalu [PL]Mapy i geolokalizacja w Drupalu [PL]
Mapy i geolokalizacja w Drupalu [PL]Droptica
 
Drush - najbardziej przydatne komendy oraz tworzenie własnej prostej komendy ...
Drush - najbardziej przydatne komendy oraz tworzenie własnej prostej komendy ...Drush - najbardziej przydatne komendy oraz tworzenie własnej prostej komendy ...
Drush - najbardziej przydatne komendy oraz tworzenie własnej prostej komendy ...Droptica
 
Search API i Faceted Search - podstawowa konfiguracja i przykłady użycia [PL]
Search API i Faceted Search - podstawowa konfiguracja i przykłady użycia [PL]Search API i Faceted Search - podstawowa konfiguracja i przykłady użycia [PL]
Search API i Faceted Search - podstawowa konfiguracja i przykłady użycia [PL]Droptica
 
Drupal multisite i domain access - kiedy, jak i dlaczego [PL]
Drupal multisite i domain access - kiedy, jak i dlaczego [PL]Drupal multisite i domain access - kiedy, jak i dlaczego [PL]
Drupal multisite i domain access - kiedy, jak i dlaczego [PL]Droptica
 
Mautic - Open Source Marketing Automation [PL]
Mautic - Open Source Marketing Automation [PL]Mautic - Open Source Marketing Automation [PL]
Mautic - Open Source Marketing Automation [PL]Droptica
 

More from Droptica (17)

Business development w praktyce - jak skutecznie sprzedawać software [PL]
Business development w praktyce - jak skutecznie sprzedawać software [PL]Business development w praktyce - jak skutecznie sprzedawać software [PL]
Business development w praktyce - jak skutecznie sprzedawać software [PL]
 
PHPUnit - jak zacząć pisać testy automatyczne [PL]
PHPUnit - jak zacząć pisać testy automatyczne [PL]PHPUnit - jak zacząć pisać testy automatyczne [PL]
PHPUnit - jak zacząć pisać testy automatyczne [PL]
 
Komunikacja w zespole projektowym [PL]
Komunikacja w zespole projektowym [PL]Komunikacja w zespole projektowym [PL]
Komunikacja w zespole projektowym [PL]
 
Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]
 
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]
 
Devel - przegląd możliwości modułu [PL]
Devel - przegląd możliwości modułu [PL]Devel - przegląd możliwości modułu [PL]
Devel - przegląd możliwości modułu [PL]
 
Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]
Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]
Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]
 
Od środowiska developerskiego do produkcji [PL]
Od środowiska developerskiego do produkcji [PL]Od środowiska developerskiego do produkcji [PL]
Od środowiska developerskiego do produkcji [PL]
 
Nowości w drupal 9 i 10 [PL]
Nowości w drupal 9 i 10 [PL]Nowości w drupal 9 i 10 [PL]
Nowości w drupal 9 i 10 [PL]
 
Skuteczna komunikacja w projekcie informatycznym [PL]
Skuteczna komunikacja w projekcie informatycznym [PL]Skuteczna komunikacja w projekcie informatycznym [PL]
Skuteczna komunikacja w projekcie informatycznym [PL]
 
Droopler: instalacja z użyciem composer i przykład budowy prostej strony firm...
Droopler: instalacja z użyciem composer i przykład budowy prostej strony firm...Droopler: instalacja z użyciem composer i przykład budowy prostej strony firm...
Droopler: instalacja z użyciem composer i przykład budowy prostej strony firm...
 
Open social - przegląd możliwości dystrybucji [PL]
Open social - przegląd możliwości dystrybucji [PL]Open social - przegląd możliwości dystrybucji [PL]
Open social - przegląd możliwości dystrybucji [PL]
 
Mapy i geolokalizacja w Drupalu [PL]
Mapy i geolokalizacja w Drupalu [PL]Mapy i geolokalizacja w Drupalu [PL]
Mapy i geolokalizacja w Drupalu [PL]
 
Drush - najbardziej przydatne komendy oraz tworzenie własnej prostej komendy ...
Drush - najbardziej przydatne komendy oraz tworzenie własnej prostej komendy ...Drush - najbardziej przydatne komendy oraz tworzenie własnej prostej komendy ...
Drush - najbardziej przydatne komendy oraz tworzenie własnej prostej komendy ...
 
Search API i Faceted Search - podstawowa konfiguracja i przykłady użycia [PL]
Search API i Faceted Search - podstawowa konfiguracja i przykłady użycia [PL]Search API i Faceted Search - podstawowa konfiguracja i przykłady użycia [PL]
Search API i Faceted Search - podstawowa konfiguracja i przykłady użycia [PL]
 
Drupal multisite i domain access - kiedy, jak i dlaczego [PL]
Drupal multisite i domain access - kiedy, jak i dlaczego [PL]Drupal multisite i domain access - kiedy, jak i dlaczego [PL]
Drupal multisite i domain access - kiedy, jak i dlaczego [PL]
 
Mautic - Open Source Marketing Automation [PL]
Mautic - Open Source Marketing Automation [PL]Mautic - Open Source Marketing Automation [PL]
Mautic - Open Source Marketing Automation [PL]
 

Rest API w Drupalu - działanie i definicja własnych endpointów [PL]