APIs
REST

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: Ă©gal
  • eq_any: Ă©gal Ă  n'importe lequel des choix
  • eq_all: Ă©gal Ă  tous les choix
  • not_eq: n'est pas Ă©gal Ă 
  • not_eq_any: n'est Ă©gal Ă  n'importe lequel des choix
  • not_eq_all: n'est Ă©gal Ă  aucun des choix
  • matches: correspond
  • matches_any: correspond Ă  n'importe lequel des choix
  • matches_all: correspond Ă  tous les choix
  • does_not_match: ne correspond pas
  • does_not_match_any: ne correspond pas Ă  n'importe lequel des choix
  • does_not_match_all: ne correspond Ă  aucun des choix
  • lt: est plus petit que
  • lt_any: est plus petit que n'importe lequel des choix
  • lt_all: est plus petit que tous les choix
  • lteq: est plus petit ou Ă©gal Ă 
  • lteq_any: est plus petit ou Ă©gal Ă  n'importe lequel des choix
  • lteq_all: est plus petit ou Ă©gal Ă  tous les choix
  • gt: est plus grand que
  • gt_any: est plus grand que n'importe lequel des choix
  • gt_all: est plus grand que tous les choix
  • gteq: est plus grand ou Ă©gal Ă 
  • gteq_any: est plus grand ou Ă©gal Ă  n'importe lequel des choix
  • gteq_all: est plus grand ou Ă©gal Ă  tous les choix
  • in: dans
  • in_any: dans n'importe lequel des choix
  • in_all: dans tous les choix
  • not_in: n'est pas dans
  • not_in_any: n'est pas dans n'importe lequel des choix
  • not_in_all: n'est dans aucun des choix
  • cont: contient
  • cont_any: contient n'importe lequel des choix
  • cont_all: contient tous les choix
  • not_cont: ne contient pas
  • not_cont_any: ne contient pas n'importe lequel des choix
  • not_cont_all: ne contient aucun des choix
  • start: dĂ©bute par -start_any: dĂ©bute par n'importe lequel des choix
  • start_all: dĂ©bute par tous les choix
  • not_start: ne dĂ©bute pas par
  • not_start_any: ne dĂ©bute pas par n'importe lequel des choix
  • not_start_all: ne dĂ©bute par aucun des choix
  • end: termine par
  • end_any: termine par n'importe lequel des choix
  • end_all: termine par tous les choix
  • not_end: ne termine pas par
  • not_end_any: ne termine pas par n'importe lequel des choix
  • not_end_all: ne termine par aucun des choix
  • 'true': est vrai
  • 'false': est faux
  • present: est prĂ©sent
  • blank: est vide
  • 'null': est nul
  • not_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.