Aller au contenu

Filtrage, Tri et Pagination

La plupart des endpoints qui renvoient des tableaux peuvent inclure des informations de filtrage, de tri et de pagination dans la requête pour vous aider à gérer les résultats de manière efficace.

Vous pouvez ajouter des filtres à votre requête pour vérifier si le champ que vous spécifiez contient une chaîne de caractères ou un nombre spécifique.

La structure est la suivante : objet.clé=valeur, par exemple : name=pikachu.

Requête :

https://api.tcgdex.net/v2/en/cards?name=pikachu

Réponse :

[
{
"id": "basep-1",
"localId": "1",
"name": "Pikachu",
"image": "https://assets.tcgdex.net/fr/base/basep/1"
},
// ...
{
"id": "xyp-XY95",
"localId": "XY95",
"name": "Pikachu",
"image": "https://assets.tcgdex.net/fr/xy/xyp/XY95"
}
]

Pour permettre une utilisation plus flexible de l’API, vous pouvez ajouter différents préfixes aux filtres pour modifier leur fonctionnement.

TL:DR : le tableau ci-dessous résume comment cela fonctionne.

NomPréfixeExempleRésultat attendu
Filtre d’Égalité Laxiste , like:name=fu, name=like:fu, name=fu*Éléments contenant la valeur
Filtre d’Inegalité Laxistenot:notlike:name=not:fuÉléments ne contenant pas la valeur
Filtre d’Égalité Stricteq:name=eq:FurretÉléments avec la valeur exacte
Filtre de Différence Strictneq:name=neq:FurretÉléments sans la valeur exacte
Supérieur ou Égalgte:hp=gte:50Éléments avec une valeur supérieure ou égale
Inférieur ou Égallte:hp=lte:50Éléments avec une valeur inférieure ou égale
Supérieur àgt:hp=gt:50Éléments avec une valeur supérieure
Inférieur àlt:hp=lt:50Éléments avec une valeur inférieure
Est nulnull:effect=null:Éléments sans valeur
N’est pas nulnotnull:effect=notnull:Éléments avec une valeur

C’est le filtre par défaut lors de l’exécution d’une requête. Il effectue une recherche laxiste dans le champ spécifié, ce qui signifie qu’il cherche si l’entrée est une partie de l’élément recherché. De plus, la recherche est insensible à la casse.

ex : name=abo ou name=like:abo, le name contient abo quelque part (peut correspondre à Abomasnow ou Brocélôme).

Si vous ajoutez un astérisque au début et/ou à la fin, par exemple name=*chu, il vérifiera le début/la fin du texte comme *chu correspond à Pikachu mais pas à Pikachu sur la Balle. De même, fu* correspond à Fouinar mais pas à Nounourson.

Vous pouvez inverser le filtre précédent en changeant le préfixe en not: ou notlike:, il trouvera les éléments qui ne correspondent pas de la même manière que ci-dessus.

Ajouter un deuxième égal = à la requête permettra de rechercher la valeur exacte au lieu de la correspondance laxiste par défaut.

?name=eq:abo

Effectue une vérification d’égalité stricte et exclut ceux qui correspondent.

ex : name=neq:abo le name NE DOIT PAS être égal à abo.

Pour les nombres uniquement

Permet d’obtenir des valeurs supérieures ou égales à l’entrée.

ex : hp=gte:10

Pour les nombres uniquement

Permet d’obtenir des valeurs inférieures ou égales à l’entrée.

hp=lte:10

Pour les nombres uniquement

Permet d’obtenir des valeurs supérieures à l’entrée.

ex : hp=gt:10

Pour les nombres uniquement

Permet d’obtenir des valeurs inférieures à l’entrée.

hp=lt:10

ex : effect=null: la carte n’a pas d’effet.

Assurez-vous que le : est bien présent !

ex : effect=notnull: la carte a un effet.

Assurez-vous que le : est bien présent !

Pour certains champs, vous pouvez ajouter plusieurs valeurs à comparer.

ex : name=eq:Fouinar|Pikachu, cela correspondra à la fois à Pikachu et Fouinar.

Le tri est effectué par défaut dans l’API en fonction des champs releaseDate > localId > id.

Vous pouvez remplacer l’algorithme de tri par défaut en ajoutant des paramètres à votre requête :

paramètre de requêtevaleur par défautvaleurs possiblesdescription
sort:fieldreleaseDate > localId > idclé de l’objetchange le champ utilisé pour le tri (DOIT être le nom d’un champ de l’objet)
sort:orderASCASC, DESCchange l’ordre de tri sur le champ spécifié

Requête :

https://api.tcgdex.net/v2/fr/sets?sort:field=name&sort:order=DESC

Réponse :

[
{
"id": "sma",
"name": "Yellow A Alternate",
"symbol": "https://assets.tcgdex.net/univ/sm/sma/symbol",
"cardCount": {
"total": 94,
"official": 94
}
},
// ...
{
"id": "sv03.5",
"name": "151",
"logo": "https://assets.tcgdex.net/fr/sv/sv03.5/logo",
"symbol": "https://assets.tcgdex.net/univ/sv/sv03.5/symbol",
"cardCount": {
"total": 207,
"official": 165
}
}
]

La pagination n’est pas effectuée automatiquement pour accélérer les requêtes côté client.

Vous pouvez tout de même l’activer en ajoutant les paramètres de pagination suivants à votre requête :

paramètre de requêtevaleur par défautvaleurs possiblesdescription
pagination:page1NombreIndique la page à afficher
pagination:itemsPerPage100 (lorsque pagination:page est défini)NombreIndique le nombre d’éléments affichés par page

Requête :

https://api.tcgdex.net/v2/fr/sets?pagination:page=3&pagination:itemsPerPage=2

Réponse :

[
{
"id": "base3",
"name": "Fossile",
"logo": "https://assets.tcgdex.net/fr/base/base3/logo",
"symbol": "https://assets.tcgdex.net/univ/base/base3/symbol",
"cardCount": {
"total": 62,
"official": 62
}
},
{
"id": "jumbo",
"name": "Cartes Jumbo",
"cardCount": {
"total": 160,
"official": 160
}
}
]