Scroll
JSON:API naspram osnovnog REST modula
TL;DR
Izaberite REST ako imate podatke koji nisu entiteti i želite da ih izložite. U svim drugim slučajevima, izaberite JSON:API.
Malo detaljnije:
- Core REST modul omogućava bilo šta (bilo koji format, bilo koju logiku, bilo koji HTTP metod) i ekstremnu konfigurabilnost. Moćan ali kompleksan, pa zato relativno lomljiv.
- JSON:API je fokusiran na izlaganje najveće snage Drupala (entiteti / modelovanje podataka) na koherentan način. Jednostavan ali dovoljno snažan za većinu slučajeva.
Matrica funkcionalnosti
Funkcionalnost | JSON:API | REST | Napomena |
---|---|---|---|
Entiteti izloženi kao resursi | ✔️ | ✔️ | REST: potrebno je konfigurisati za svaki tip entiteta. JSON:API: sve izloženo podrazumevano. Oboje poštuju pristup entitetima. |
Prikazivanje custom podataka kao resursa | ✔️ | Pisanje custom @RestResource plugina. JSON:API podržava samo entitete. | |
Dohvatanje pojedinačnih resursa | ✔️ | ✔️ | |
Dohvatanje lista resursa | ✔️ | delimično |
REST: potrebno je konfigurisati View i podesiti "REST export" prikaz. |
Paginacija listi resursa | ✔️ | Potreban dodatni modul kao Pager Serializer. | REST: nije podržano! REST export View-ovi vraćaju sve resurse. |
Filtriranje listi resursa | ✔️ | delimično |
REST: samo ako kreirate exposed filter za svako polje i svaki operator |
Sortiranje resursa | ✔️ | ||
Uključivanje/ugnježđavanje (includes/embedding) | ✔️ | Samo u HAL+JSON | |
Bez nepotrebnog omotavanja vrednosti polja | ✔️ | HAL normalizacija i podrazumevana normalizacija (svi formati) izlažu PHP strukture, što otežava rad klijentima. JSON:API pojednostavljuje normalizaciju polja sa jednom vrednošću. | |
Mogućnost izostavljanja polja koja klijentu nisu potrebna | ✔️ | ||
Konzistentni URL-ovi | ✔️ | ||
Klijent može da otkrije dostupne tipove resursa | ✔️ | ||
Drupal-agnostična struktura odgovora | ✔️ | REST: HAL normalizacija u teoriji nema Drupal specifičnosti, ali u praksi ih ima. | |
Klijentske biblioteke | ✔️ | ||
Ekstenzibilna specifikacija | WIP | ||
Nema potrebe za konfiguracijom | ✔️ | REST: svaki @RestResource plugin mora biti ručno konfigurisani za izlaganje, formate, autentifikaciju i HTTP metode. JSON:API: svi entiteti su automatski izloženi, poštuju se pravila pristupa, svi instalirani autentifikacioni provajderi su dozvoljeni automatski. |
Više informacija
Pogledajte razloge za dodavanje JSON:API modula u Drupal core, kao i arhitektonsku dokumentaciju modula.
Tekst preuzet sa Drupal Dokumentacije.