REST API
Notre API RESTful fourni une façon simple d'intĂ©ragir avec la base de donnĂ©es de "Potter DB", en adhĂ©rant aux spĂ©cifications JSON:API et OAS. Dans cette section, nous aborderons les principaux aspects de l'utilisation de l'API REST, ce qui inclue les endpoints disponibles et la maniĂšre de formatter vos requĂȘtes et rĂ©ponses.
Endpoints disponibles
Pour accĂ©der aux donnĂ©es avec l'API REST vous devez faire une requĂȘte en GET
sur l'un des endpoints suivants :
DĂ©rouler pour voir tous les endpoints
Livres
/v1/books
: Accéder à la liste des livres./v1/books/{id}
: Accéder à un livre spécifique via son ID./v1/books/{id_du_livre}/chapters
: Accéder à la liste des chapitres d'un livre en particulier./v1/books/{id_du_livre}/chapters/{id}
: Accéder à un chapitre spécifique d'un livre particulier, via l'ID du chapitre.
Personnages
/v1/characters
: Accéder à la liste des personnages./v1/characters/{id}
: Accéder à un personnage en particulier via son ID.
Films
/v1/movies
: Accéder à la liste des films./v1/movies/{id}
: Accéder à un film en particulier via son ID.
Potions
/v1/potions
: Accéder à la liste des potions./v1/potions/{id}
: Accéder à une potion en particulier via son ID.
Sorts
/v1/spells
: Accéder à la liste des sorts./v1/spells/{id}
: Accéder à un sort en particulier via son ID.
Les IDs doivent ĂȘtre fournies au format UUID ou en slug.
Spécifications OpenAPI (OAS)
Pour faciliter lâintĂ©gration, nous fournissons un document de spĂ©cification OpenAPI (opens in a new tab) qui dĂ©crit les endpoints, les modĂšles de donnĂ©es et les schĂ©mas de requĂȘte/rĂ©ponse de lâAPI. LâAPI est conforme Ă la version 3.0.3 de la spĂ©cification OAS. Vous trouverez notre document OAS actuel ici (opens in a new tab).
Format JSON:API
Notre API REST adhĂšre Ă la spĂ©cification JSON:API (opens in a new tab), qui fournit un moyen cohĂ©rent de structurer les requĂȘtes et les rĂ©ponses de lâAPI. Voici un aperçu des principales caractĂ©ristiques de JSON:API dans le contexte de notre API :
- Objets : Chaque ressource est représentée comme un objet avec un type, un
id
et des attributs (attributes
). - Relations : Les ressources peuvent ĂȘtre liĂ©es Ă dâautres ressources, par exemple une ressource "livre" (
book
) est liée aux ressources "chapitre" (chapter
) et vice versa. - Pagination : Lorsquâune rĂ©ponse contient un grand nombre de ressources, la rĂ©ponse sera paginĂ©e. Voir Pagination pour plus dâinformations.
- Erreurs : Les erreurs sont retournées avec des structures normalisées, ce qui facilite la gestion et le dépannage des problÚmes.
Faire des requĂȘtes
Pour faire une demande Ă lâAPI REST, vous devez faire une requĂȘte GET
Ă lâun de nos endpoints disponibles.
Voici un exemple simple de la façon de rĂ©cupĂ©rer une liste de personnages Ă lâaide du endpoint /characters
:
GET https://api.potterdb.com/v1/characters
Veuillez vous rĂ©fĂ©rer au document de spĂ©cification OpenAPI pour plus dâinformations.
Pagination
Les réponses avec un grand nombre de ressources seront paginées. La réponse incluera un objet de liens (links
) avec des liens first
, last
, prev
et next
(respectivement : premier, dernier, précédent et suivant) pour accéder à la premiÚre, la derniÚre page ainsi qu'aux pages précédentes et suivantes de résultats.
Pour changer le nombre de ressources par page, vous pouvez utiliser le paramĂštre de requĂȘte page[size]
(la taille maximum - size - Ă©tant de 100) comme ceci:
GET https://api.potterdb.com/v1/characters?page[size]=25
Pour changer de page, vous pouvez utiliser le paramĂštre de requĂȘte page[number]
("number" étant le numéro de page souhaité):
GET https://api.potterdb.com/v1/characters?page[number]=2
Ransack
Notre API REST supporte une fonctionnalité de filtre avancé et de tri en utilisant Ransack (opens in a new tab).
Filtrer
Vous pouvez filtrer une requĂȘte en ajoutant le mot-clef filter
en paramĂštre de requĂȘte. Par exemple, pour filter les personnages par nom, vous utiliserez le prĂ©dicat name_cont
:
GET https://api.potterdb.com/v1/characters?filter[name_cont]=Weasley
Ceci vous retournera tous les personnages qui portent le nom "Weasley".
Agrandir pour voir tous les prédicats de filtres disponibles
eq
: Ă©galeq_any
: Ă©gal Ă n'importe lequel des choixeq_all
: Ă©gal Ă tous les choixnot_eq
: n'est pas Ă©gal Ănot_eq_any
: n'est Ă©gal Ă n'importe lequel des choixnot_eq_all
: n'est Ă©gal Ă aucun des choixmatches
: correspondmatches_any
: correspond Ă n'importe lequel des choixmatches_all
: correspond Ă tous les choixdoes_not_match
: ne correspond pasdoes_not_match_any
: ne correspond pas Ă n'importe lequel des choixdoes_not_match_all
: ne correspond Ă aucun des choixlt
: est plus petit quelt_any
: est plus petit que n'importe lequel des choixlt_all
: est plus petit que tous les choixlteq
: est plus petit ou Ă©gal Ălteq_any
: est plus petit ou Ă©gal Ă n'importe lequel des choixlteq_all
: est plus petit ou Ă©gal Ă tous les choixgt
: est plus grand quegt_any
: est plus grand que n'importe lequel des choixgt_all
: est plus grand que tous les choixgteq
: est plus grand ou Ă©gal Ăgteq_any
: est plus grand ou Ă©gal Ă n'importe lequel des choixgteq_all
: est plus grand ou Ă©gal Ă tous les choixin
: dansin_any
: dans n'importe lequel des choixin_all
: dans tous les choixnot_in
: n'est pas dansnot_in_any
: n'est pas dans n'importe lequel des choixnot_in_all
: n'est dans aucun des choixcont
: contientcont_any
: contient n'importe lequel des choixcont_all
: contient tous les choixnot_cont
: ne contient pasnot_cont_any
: ne contient pas n'importe lequel des choixnot_cont_all
: ne contient aucun des choixstart
: débute par -start_any
: débute par n'importe lequel des choixstart_all
: débute par tous les choixnot_start
: ne débute pas parnot_start_any
: ne débute pas par n'importe lequel des choixnot_start_all
: ne débute par aucun des choixend
: termine parend_any
: termine par n'importe lequel des choixend_all
: termine par tous les choixnot_end
: ne termine pas parnot_end_any
: ne termine pas par n'importe lequel des choixnot_end_all
: ne termine par aucun des choix'true'
: est vrai'false'
: est fauxpresent
: est présentblank
: est vide'null'
: est nulnot_null
: n'est pas nul
Trier
Vous pouvez trier les ressources en ajoutant le paramĂštre de requĂȘte sort
Ă votre requĂȘte. Par exemple, pour trier les personnages par nom, vous pouvez utiliser l'attribut name
(se rendre sur Ressources pour voir tous les attributs disponibles) :
GET https://api.potterdb.com/v1/characters?sort=name
Utilisez le préfixe -
pour trier par ordre descendant.