REST API
Unsere REST-API bietet eine unkomplizierte Möglichkeit, mit der Potter DB zu interagieren, wobei die JSON:API- und OAS-Spezifikation eingehalten wird. In diesem Abschnitt behandeln wir die wichtigsten Aspekte der Verwendung der REST-API, einschließlich der verfügbaren Endpunkte und der Formatierung deiner Anfragen und Antworten.
Verfügbare Endpunkte
Um auf Daten aus der REST-API zuzugreifen, musst du eine GET
-Anfrage an einen der folgenden Endpunkte schicken:
Aufklappen, um alle Endpunkte zu sehen
Bücher
/v1/books
: Abruf einer Liste von Büchern./v1/books/{id}
: Abruf eines einzelnen Buchs anhand seiner ID./v1/books/{book_id}/chapters
: Abruf einer Liste von Kapiteln eines bestimmten Buchs./v1/books/{book_id}/chapters/{id}
: Abruf eines Kapitels eines bestimmten Buchs anhand seiner ID.
Figuren
/v1/characters
: Abruf einer Liste von Figuren./v1/characters/{id}
: Abruf einer Figur anhand ihrer ID.
Filme
/v1/movies
: Abruf einer Liste von Filmen./v1/movies/{id}
: Abruf eines Films anhand seiner ID.
Zaubertränke
/v1/potions
: Abruf einer Liste von Zaubertränken./v1/potions/{id}
: Abruf eines Zaubertranks anhand seiner ID.
Zaubersprüche
/v1/spells
: Abruf einer Liste von Zaubersprüchen./v1/spells/{id}
: Abruf eines Zauberspruchs anhand seiner ID.
IDs müssen als UUIDs oder Slugs angegeben werden.
OpenAPI Spezifikation (OAS)
Um die Integration zu erleichtern, stellen wir ein OpenAPI Spezifikation (opens in a new tab) Dokument zur Verfügung, das die Endpunkte, Datenmodelle und Anfrage-/Antwortschemata der API beschreibt. Die API entspricht der Version 3.0.3 der OAS-Spezifikation. Unser aktuelles OAS Dokument ist hier (opens in a new tab) zu finden.
JSON:API Format
Unsere REST-API entspricht der JSON:API-Spezifikation (opens in a new tab), die eine einheitliche Methode zur Strukturierung von API-Anfragen und -Antworten bietet. Hier ist ein Überblick über die wichtigsten Merkmale von JSON:API im Zusammenhang mit unserer API:
- Ressourcen: Jede Ressource ist ein Objekt mit einem Typ (
type
), ID (id
) und Attributen (attributes
). - Relationen: Ressourcen können mit anderen Ressourcen verbunden sein, z. B. ist eine
Buch
-Ressource mit einerKapitel
-Ressource verbunden und umgekehrt. - Paginierung: Wenn eine Antwort eine große Anzahl von Ressourcen enthält, wird die Antwort paginiert. Siehe Paginierung für weitere Infos.
- Fehler: Fehler werden in standardisiertem Format zurückgegeben, was die Behandlung und Behebung von Problemen erleichtert.
Abfragen machen
Um eine Abfrage an unsere REST-API zu machen, muss eine GET
-Anfrage an einen unserer verfügbaren Endpunkte gestellt werden.
Hier ein einfaches Beispiel für das Abrufen einer Liste von Figuren über den Endpunkt /characters
:
GET https://api.potterdb.com/v1/characters
Ausführliche Informationen kannst du in der OpenAPI-Spezifikation finden.
Paginierung
Antworten mit einer großen Anzahl von Ressourcen werden paginiert. Die Antwort enthält ein links
-Objekt mit first
-, last
-, prev
- und next
-Links zu den ersten, letzten, vorherigen bzw. nächsten Seiten der Ergebnisse.
Um die Anzahl der Ressourcen pro Seite zu ändern, kannst du den Abfrageparameter page[size]
verwenden (die maximale Größe ist 100):
GET https://api.potterdb.com/v1/characters?page[size]=25
Um die aktuelle Seite zu ändern, kannst du den Abfrageparameter page[number]
verwenden:
GET https://api.potterdb.com/v1/characters?page[number]=2
Ransack
Unsere REST-API unterstützt erweitertes Filtern und Sortieren mit Ransack (opens in a new tab).
Filtern
Du kannst Ressourcen filtern, indem du einen filter
Abfrageparameter zu deiner Anfrage hinzufügst. Um zum Beispiel Zeichen nach Namen zu filtern, kannst du das Prädikat name_cont
verwenden:
GET https://api.potterdb.com/v1/characters?filter[name_cont]=Weasley
Dies wird alle Figuren mit dem Namen "Weasley" zurückgeben.
Aufklappen, um alle verfügbaren Filter-Prädikate zu sehen
eq
: gleicheq_any
: gleich jedemeq_all
: gleich allennot_eq
: nicht gleichnot_eq_any
: nicht gleich irgendeinemnot_eq_all
: nicht gleich für allematches
: entsprichtmatches_any
: passt zu jedemmatches_all
: passt auf alledoes_not_match
: stimmt nicht übereindoes_not_match_any
: stimmt mit keinem übereindoes_not_match_all
: entspricht nicht allenlt
: weniger alslt_any
: weniger als jederlt_all
: weniger als allelteq
: kleiner als oder gleichlteq_any
: kleiner oder gleich einemlteq_all
: kleiner als oder gleich allengt
: größer alsgt_any
: größer als jedergt_all
: größer als allegteq
: größer als oder gleichgteq_any
: größer als oder gleich einemgteq_all
: größer als oder gleich allenin
: vorhandenin_any
: in irgendeinemin_all
: in allennot_in
: nicht vorhandennot_in_any
: nicht in irgendeinemnot_in_all
: nicht in allencont
: enthältcont_any
: enthält beliebigecont_all
: enthält allenot_cont
: enthält nichtnot_cont_any
: enthält keinenot_cont_all
: enthält nicht allestart
: beginnt mitstart_any
: irgendeiner beginnt mitstart_all
: alle beginnen mitnot_start
: beginnt nicht mitnot_start_any
: irgendeiner beginnt nicht mitnot_start_all
: keiner beginnt mitend
: endet mitend_any
: irgendeiner endet mitend_all
: alle enden mitnot_end
: endet nicht mitnot_end_any
: irgendeiner endet nicht mitnot_end_all
: keiner endet mit'true'
: ist wahr'false'
: ist falschpresent
: ist vorhandenblank
: ist leer'null'
: ist nullnot_null
: ist nicht null
Sortieren
Du kannst Ressourcen sortieren, indem du einen sort
Abfrageparameter zu deiner Anfrage hinzufügst. Um beispielsweise Figuren nach Namen zu sortieren, kannst das Attribut name
verwenden (unter Ressourcen findest du alle verfügbaren Attribute):
GET https://api.potterdb.com/v1/characters?sort=name
Verwende das Präfix -
, um in absteigender Reihenfolge zu sortieren.