Aller au contenu principal

1-2 Récupérer une entrée spécifique

Afin de récupérer un projet spécifique, selon la documentation de Supabase, on peut inclure un paramètre querystring à la requête:

  • Clé: Le nom de la colonne
  • Valeur: eq.[critere-de-recherche]

C'est ce que vous voyez à la ligne mise en surbrillance ici:

curl --get 'https://zjywabthssmxcftqcyyo.supabase.co/rest/v1/projets' \
-H "apikey: SUPABASE_CLIENT_ANON_KEY" \
-H "Authorization: Bearer SUPABASE_CLIENT_ANON_KEY" \
-H "Range: 0-9" \
-d "select=*" \
\
`# Filters` \
-d "column=eq.Equal+to" \
-d "column=gt.Greater+than" \
-d "column=lt.Less+than" \
-d "column=gte.Greater+than+or+equal+to" \
-d "column=lte.Less+than+or+equal+to" \
-d "column=like.*CaseSensitive*" \
-d "column=ilike.*CaseInsensitive*" \
-d "column=is.null" \
-d "column=in.(Array,Values)" \
-d "column=neq.Not+equal+to" \
\
`# Arrays` \
-d "array_column=cs.{array,contains}" \
-d "array_column=cd.{contained,by}" \
\
`# Logical operators` \
-d "column=not.like.Negate+filter" \
-d "or=(some_column.eq.Some+value,other_column.eq.Other+value)"

Ainsi, si on voulait filtrer selon l'identifiant d'un projet, la requête serait

GET https://{id-projet-supabase}.supabase.co/rest/v1/projets?id=eq.{id}

Ainsi, dans notre cas:

  • id-projet-supabase est l'id de votre instance Supabasse
  • id est l'identifiant de l'entrée dans la table projets, donc du projet, à obtenir.

La seule information manquante par rapport à ce que nous avons fait précédemment est celle du id.

Vous pouvez aller directement dans Supabase dans la colonne id pour récupérer un id de projet: img

Ou encore, à partir de la liste de projets récupérés via l'API et la propriété id d'un projet:

[
{
"id": 1,
"created_at": "2025-06-06T14:56:28.961561+00:00",
"updated_at": "2025-06-06T14:56:28.961561+00:00",
"nom": "Discreddit",
"description": "Un super projet de session à développer en équipe!",
"image_url": "https://imgur.com/k00Tj9S.png"
},
{
"id": 2,
"created_at": "2025-06-06T14:56:48.988456+00:00",
"updated_at": "2025-06-06T14:56:48.988456+00:00",
"nom": "Lan Party",
"description": "Organisation du Lan Party",
"image_url": null
},
{
"id": 3,
"created_at": "2025-06-06T14:57:08.761115+00:00",
"updated_at": "2025-06-06T14:57:08.761115+00:00",
"nom": "Soirée jeux vidéo",
"description": "Organisation de la soirée jeu vidéo",
"image_url": null
}
]

Créer et exécuter une nouvelle requête

Créons la requête dans Postman pour obtenir une entrée

  1. Créez une nouvelle requête Postman

  2. Spécifiez GET comme action HTTP

  3. Entrez l'URL pour la requête. Par exemple:

    https://{id-projet-supabase}.supabase.co/rest/v1/projets
  4. Assurez-vous d'entrer votre clé d'API via une en-tête apiKey

  5. Entrez dans la section params le règle pour filtrer en fonction du id de projet que vous voulez récupérer. Par exemple: img

    info

    Remarquez que l'URL change! Elle devient https://zjywabthssmxcftqcyyo.supabase.co/rest/v1/projets?id=eq.1 et un paramètre de type querystring a été ajouté à la fin.

    La section Params permet de créer des paramètres d'URL facilement.

    Dans notre cas: id: nom de la colonne à filtrer eq.1: retourner l'entrée pour laquelle id est égal (eq.) à 1

  6. Cliquer sur Send

  7. Vous devriez obtenir un seul projet format JSON dans la section Response!

    [
    {
    "id": 1,
    "created_at": "2025-06-06T14:56:28.961561+00:00",
    "updated_at": "2025-06-06T14:56:28.961561+00:00",
    "nom": "Discreddit",
    "description": "Un super projet de session à développer en équipe!",
    "image_url": "https://imgur.com/k00Tj9S.png"
    }
    ]

Par contre, si vous avez un oeil de lynx, vous remarquerez que le retour est un tableau! Ça fonctionne, mais idéalement, on voudrait un objet JSON seul.

Obtenir un objet JSON

Il est possible de préciser à l'API qu'on s'attend à obtenir un seul résultat. Par cela, on peut modifier l'en-tête Accept pour la suivante:

application/vnd.pgrst.object+json
info

application/vnd.pgrst.object+json est un MIME type, soit un type de données. Un peu comme application/pdf pour un PDF.

vnd.pgrst.object+json n'est pas un type de données standard, c'est pourquoi on retrouve vnd au début, pour vendor.

Pour cela, à partir de l'onglet Headers, décochez l'option par défaut Accept et créez-en une supplémentaire avec la valeur désirée.

img

Réessayez la requête et vous devriez maintenant obtenir un objet plutôt qu'un tableau!

{
"id": 1,
"created_at": "2025-06-06T14:56:28.961561+00:00",
"updated_at": "2025-06-06T14:56:28.961561+00:00",
"nom": "Discreddit",
"description": "Un super projet de session à développer en équipe!",
"image_url": "https://imgur.com/k00Tj9S.png"
}