REST API
Naše RESTful API ponúka priamočiary spôsob interakcie s PotterDB v súlade s JSON:API a OAS špecifikáciou. V tejto kapitole sa oboznámite s kľúčovými aspektmi používanie Potter DB REST API, okrem iného sa dozviete viac o jednotlivých koncových bodov a formátovaní požiadaviek a odpovedí.
Koncové body
Na získanie dát cez REST API pošlite požiadavku GET jednému z nasledujúcich koncových bodov:
Kliknutím zobrazíte všetky koncové body
Knihy (books)
/v1/books: Vráti zoznam kníh./v1/books/{id}: Vráti jednu knihu na základe jej ID./v1/books/{book_id}/chapters: Vráti zoznam kapitol určitej knihy./v1/books/{book_id}/chapters/{id}: Vráti jednu kapitolu určitej knihy na základe jej ID.
Postavy (characters)
/v1/characters: Vráti zoznam postáv./v1/characters/{id}: Vráti jednu postavu na základe jej ID.
Filmy (movies)
/v1/movies: Vráti zoznam filmov./v1/movies/{id}: Vráti jeden film na základe jeho ID.
Odvary (potions)
/v1/potions: Vráti zoznam odvarov./v1/potions/{id}: Vráti jeden odvar na základe jeho ID.
Spells (Zaklínadlá)
/v1/spells: Vráti zoznam zaklínadiel./v1/spells/{id}: Vráti jedno zaklínadlo na základe jeho ID.
ID musí byť vo formáte UUID alebo slug.
Špecifikácia podľa štandardu OpenAPI (OAS)
Na uľahčenie integrácie poskytujeme špecifikáciu v súlade s OpenAPI (opens in a new tab) štandardom, ktorá popisuje jednotlivé koncové body API, dátové modely a schémy požiadaviek a odpovedí. Naše API sa riadi verziou 3.0.3 OpenAPI štandardu. Aktuálnu API špecifikáciu nájdete tu (opens in a new tab).
Formát JSON:API
Naše REST API sa riadi špecifikáciou JSON:API (opens in a new tab), ktorá zaručuje konzistentný spôsob štruktúrovania API požiadaviek a odpovedí. Tu je prehľad kľúčových vlastností špecifikácie JSON:API v kontexte nášho API:
- Zdrojové objekty: Každý zdroj je reprezentovaný ako objekt, ktorý má
type,idaattributes. - Vzťahy: Zdroje môžu mať vzťah k iným zdrojom, napríklad zdroj
bookje vo vzťahu k zdrojuchaptera naopak. - Stránkovanie: Odpovede obsahujúce veľký počet zdrojov sú stránkované. Viac informácií nájdete v časti Stránkovanie.
- Chyby: Chyby sa vracajú v štandardizovanom formáte, čo uľahčuje spracovanie a riešenie problémov.
Posielanie požiadaviek
Na získanie dát cez REST API pošlite požiadavku GET jednému z koncových bodov. Tu je jednoduchý príklad ako získať list postáv z koncového bodu /characters:
GET https://api.potterdb.com/v1/charactersPodrobné informácie nájdete v špecifikácii podľa štandardu OpenAPI, ktorú nájde tu (opens in a new tab).
Stránkovanie
Odpovede obsahujúce veľký počet zdrojov sú stránkované. Stránkovaná odpoveď obsahuje objekt links s odkazmi first, last, prev a next na prvú, poslednú, predchádzajúcu a nasledujúcu stránku.
Ak chcete zmeniť počet zdrojov na stránke, použite parameter page[size] (maximálny počet je 100).
GET https://api.potterdb.com/v1/characters?page[size]=25Ak chcete zmeniť aktuálnu stránku, použite parameter page[number]:
GET https://api.potterdb.com/v1/characters?page[number]=2Ransack
Naše REST API podporuje pokročilé filtrovanie a zoraďovanie pomocou knižnice Ransack (opens in a new tab).
Filtrovanie
Zdroje môžete filtrovať pridaním parametru filter do vašej požiadavky. Ak chcete napríklad filtrovať postavy podľa mena, použite predikát name_eq:
GET https://api.potterdb.com/v1/characters?filter[name_cont]=WeasleyTáto požiadavka vráti všetky postavy s menom "Weasley".
Kliknutím zobrazíte všetky dostupné filtre
eq: presne sa zhodujeeq_any: presne sa zhoduje s aspoň jednýmeq_all: presne sa zhoduje so všetkýminot_eq: nezhoduje sa presnenot_eq_any: nezhoduje sa presne s aspoň jednýmnot_eq_all: nezhoduje sa presne so všetkýmimatches: zhoduje samatches_any: zhoduje sa s aspoň jednýmmatches_all: zhoduje sa so všetkýmidoes_not_match: nezhoduje sadoes_not_match_any: nezhoduje sa s aspoň jednýmdoes_not_match_all: nezhoduje sa so všetkýmilt: menší akolt_any: menší ako aspoň jedenlt_all: menší ako všetkylteq: menší alebo rovnýlteq_any: menší alebo rovný aspoň jednémulteq_all: menší alebo rovný všetkýmgt: väčší akogt_any: väčší ako aspoň jedengt_all: väčší ako všetkygteq: väčší alebo rovnýgteq_any: väčší alebo rovný aspoň jednémugteq_all: väčší alebo rovný všetkýmin: vin_any: v aspoň jednomin_all: vo všetkýchnot_in: nie vnot_in_any: nie v aspoň jednomnot_in_all: nie v ani jednomcont: obsahujecont_any: obsahuje aspoň jedencont_all: obsahuje všetkynot_cont: neobsahujenot_cont_any: neobsahuje aspoň jedennot_cont_all: neobsahuje všetkystart: začína nastart_any: začína na aspoň jedenstart_all: začína na všetkynot_start: nezačína nanot_start_any: nezačína na aspoň jedennot_start_all: nezačína na všetkyend: končí naend_any: končí na aspoň jedenend_all: končí na všetkynot_end: nekončí nanot_end_any: nekončí na aspoň jedennot_end_all: nekončí na všetky'true': je pravdivý'false': je nepravdivýpresent: je prítomnýblank: je prázdny'null': je nulovýnot_null: nie je nulový
Zoraďovanie
Zdroje môžete zoradiť pridaním parametru sort do vašej požiadavky. Ak chcete napríklad zoradiť postavy podľa mena, použite atribút name (všetky dostupné atribúty nájdete v časti Zdroje):
GET https://api.potterdb.com/v1/characters?sort=nameAk chcete zoradiť zdroje v zostupnom poradí, použite prefix -.