4. 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/
8. 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
9. 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
10. HAL VS JSON API
www.droptica.pl
@droptica
http://droopler.localhost/node/1?_format=hal_json http://droopler.localhost/node/1?_format=json
11. 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
21. 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
23. 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
25. 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