Aller au contenu principal

1-5 Modifier une entrée

Pour modifier un projet, le format d'une requête est le suivant:

PATCH https://{id-projet-supabase}.supabase.co/rest/v1/projets?id=eq.{id}
id-projet-supabase: votre identifiant de projet
id: l'identifiant de l'entrée à modifier

info

Assurez-vous de remplacer l'identifiant de votre projet, {id-projet-supabase}, par le vôtre.

Obtenir l'id d'un projet

Pour obtenir l'id d'un projet, vous pouvez aller directement dans Supabase à la colonne id: 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

  1. Créez une nouvelle requête de type PATCH, à l'URL de projets.

  2. Assurez-vous d'entrer votre clé d'API via un en-tête apiKey

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

    https://{id-projet-supabase}.supabase.co/rest/v1/projets
  4. Entrez dans la section params la règle pour filtrer en fonction du id de projet que vous voulez modifier. Par exemple: img

    info

    Ici, je modifie le id 1 (eq.1). Adaptez selon votre cas.

Renseigner le Body de la requête

Pour modifier un projet, il est nécessaire de fournir le détail de la ressource modifiée.

Tout comme pour la création, on utilise la portion body de la requête HTTP afin de fournir ces informations. Postman peut nous aider à renseigner cette portion de la requête.

  1. Sous l'onglet Body de la requête, sélectionnez raw et JSON comme type de données.

  2. Entrez, au format JSON, les données à soumettre. Par exemple, si on voulait modifier la description:

    {
    "description": "Une description modifiée"
    }
    info

    Lorsque vous faites une modification avec PATCH, c'est une modification partielle. Cela veut dire que vous pouvez soumettre seulement les informations qui changent. Il n'est pas nécessaire de renvoyer l'objet en entier..

  3. Appuyez sur Send

  4. Vous devriez recevoir une confirmation que le projet a bien été créé avec un retour HTTP ayant le code 204 (No Content). img

  5. Vous pouvez même vérifier dans Supabase que votre entrée a été modifiée! 🎉 img

Obtenir l'entrée modifiée

Si vous avez remarqué, lorsque vous faites une requête PATCH, le retour est vide, il n'inclut pas l'objet JSON mis à jour.

Pour retourner l'objet JSON nouvellement modifié, vous devez ajouter l'en-tête suivant: Prefer: return=representation

img

Vous recevrez ainsi un code de retour 200 si le tout est un succès, en plus de l'objet modifié!

Erreurs fréquentes

Erreur 404

Si vous tentez de modifier une entrée pour un id inexistant, vous recevrez une erreur 404.

Par exemple, PATCH https://zjywabthssmxcftqcyyo.supabase.co/rest/v1/projets?id=eq.99 (je n'ai pas de id 99 de mon côté) retournerait:

HTTP Code: 404 Réponse:

{
"code": "PGRST116",
"details": "The result contains 0 rows",
"hint": null,
"message": "JSON object requested, multiple (or no) rows returned"
}

Erreur de validation

Si jamais vous tentez de soumettre un format de données non conforme à ce qui est attendu, vous recevrez une réponse Bad request.

Par exemple, modifier pour un nom vide:

{
"nom": ""
}

Retournerait:

HTTP Code: 400 Réponse:

{
"code": "23514",
"details": "Failing row contains (1, 2025-06-06 14:56:28.961561+00, 2025-06-06 14:56:28.961561+00, , Une description modifiée, https://imgur.com/k00Tj9S.png).",
"hint": null,
"message": "new row for relation \"projets\" violates check constraint \"projets_nom_check\""
}