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.

Filtrage

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.

Exemple

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"
}
]

Préfixes

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

Filtre d’Égalité Laxiste , like:

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.

Filtre d’Inegalité Laxiste not:, notlike:

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.

Filtre d’Égalité Strict eq:

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

Filtre de Différence Strict neq:

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

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

Supérieur ou Égal gte:

Pour les nombres uniquement

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

ex : hp=gte:10

Inférieur ou Égal lte:

Pour les nombres uniquement

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

hp=lte:10

Supérieur à gt:

Pour les nombres uniquement

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

ex : hp=gt:10

Inférieur à lt:

Pour les nombres uniquement

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

hp=lt:10

est nul null:

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

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

n’est pas nul notnull:

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

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

Valeurs multiples |

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

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

Tri

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é

Exemple

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
}
}
]

Pagination

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

Exemple

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
}
}
]