Prezentacja z meetupu grupy "Uszanowanko Programowanko", tematyka AngularJS: http://www.uszanowanko.pl/angular
Autor: Marcin Gajda.
Podczas prezentacji poznamy jedną z najlepszych bibliotek do komunikacji Angulara z zewnętrznym API. Dowiemy się jak konfigurować w niej modele oraz jak korzystać z wbudowanego systemu relacji. Dodatkowo sprawdzimy jakie inne dobrodziejstwa skrywa to narzędzie.
2. Angular Restmod?
● implementuje Active Record
● mapuje dane z REST API na modele
● pozwala korzystać z kolekcji modeli
● automatyzuje tworzenie relacji
REST API – bezstanowy interfejs programistyczny
oparty o model klient - serwer i protokół HTTP.
3. Relacje?
● zależności między obiektami
● obsługa “1 do 1” oraz “1 do n”
● wsparcie dla modeli “inline”
● automatyczne rzutowanie na typ
● generowanie adresów API
4. Konfiguracja Restmoda
● system wstawek
● wstawka może składać się z:
○ ogólnej konfiguracji ($config)
○ uchwytów zdarzeń ($hooks)
○ rozszerzeń ($extend)
○ ustawień dla atrybutów
● podział na:
○ konfiguracja globalna
○ konfiguracja “per definicja”
5. Ogólne ustawienia ($config)
Pozwala na ustawienie m.in:
● nazwy klucza głównego
● źródła metadanych
● głównego adresu API
wow such configurable
6. Hooki ($hooks)
● niczym Angular interceptors
● pozwalają:
○ modyfikować żądanie przed wysłaniem
○ zmieniać w locie odpowiedź
○ sterować parsowaniem odpowiedzi
○ globalnie reagować na błędy API
9. Sterowanie atrybutami
● wartości domyślne
● maskowanie atrybutów
● ustawienia (de)serializacji
● konfiguracja relacji
Może przykład?
10. Przykładowy scenariusz
● API udostępnia:
○ informacje o muzykach
○ informacje o płytach
● Dodatkowo można:
○ osobno pobrać historię zespołu
○ szukać artystów po nazwach
● API wymaga tokenu
22. … i korzystamy z niej
var image = newBand.getImagePath();
// https://localhost/api/img/shamrock.jpg
Oprócz interfejsu Record można także
rozszerzać intrfejsy List, Scope, Static i inne.
24. Wykorzystujemy relacje
var albums = django.albums.$fetch();
// GET: /artists/1/albums
var history = django.history.$fetch();
// GET: /artists/1/history
var tags = django.tags;
Zakładając, że zdefiniowaliśmy TagModel, HistoryModel, AlbumModel:
25. Podsumowanie - wady
● niedopowiedzenia i błędy w dokumentacji
● modele są zawsze związane z kolekcją
● brak wbudowanych metod hurtowych
● tylko jedno wbudowane API style
26. Podsumowanie - zalety
● sporo możliwości konfiguracyjnych
● wpływ na przebieg działania modułu
● możliwość używania z każdym REST API
● dobrze współpracuje z formularzami
● wsparcie dla relacji