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
,id
aattributes
. - Vzťahy: Zdroje môžu mať vzťah k iným zdrojom, napríklad zdroj
book
je vo vzťahu k zdrojuchapter
a 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/characters
Podrobné 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]=25
Ak chcete zmeniť aktuálnu stránku, použite parameter page[number]
:
GET https://api.potterdb.com/v1/characters?page[number]=2
Ransack
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]=Weasley
Tá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=name
Ak chcete zoradiť zdroje v zostupnom poradí, použite prefix -
.