Aller au contenu principal

Process Posts — cycle de vie éditorial

Cette fiche couvre le parcours complet d'un post, de sa création à sa suppression, avec les patterns à respecter entre chaque étape. Chaque exemple est exécutable en direct contre l'API de démo.

Cas d'usage guide : une mini-interface éditoriale (blog interne, portail client) où un auteur peut rédiger un post, l'éditer, puis le retirer.

Vue d'ensemble du cycle

                          ┌────────────────┐
create ────▶│ DRAFT │
│ (id généré) │
└──────┬─────────┘
│ update (partial patch)

┌────────────────┐
│ PUBLISHED │
│ (visible) │
└──────┬─────────┘
│ delete


Trois règles à retenir :

  1. createPost génère l'ID — le conserver côté client dès la réponse.
  2. updatePost est un patch partiel — seuls les champs fournis sont modifiés, les autres restent intacts.
  3. deletePost renvoie true/false — le false n'est pas une erreur, c'est une indication (post déjà supprimé, par exemple).

Étape 0 — Lire ce qui existe

Avant d'écrire, exposer à l'utilisateur ce qui est déjà publié. Pagination stricte, comme pour les utilisateurs.

▶ EssayerListe paginéePOST https://graphqlzero.almansi.me/api
5 derniers posts avec leur auteur.
Query
Variables
Réponse
Cliquez sur Exécuter pour lancer la requête.

Étape 1 — Création

La mutation accepte un CreatePostInput minimaliste. À adapter à votre backend réel : certaines implémentations acceptent un champ authorId si l'utilisateur connecté ne correspond pas à l'auteur.

▶ EssayercreatePostPOST https://graphqlzero.almansi.me/api
Crée un post. La réponse contient l'ID généré — réutilisez-le dans l'étape 2.
Query
Variables
Réponse
Cliquez sur Exécuter pour lancer la requête.
Retry

En cas d'échec réseau, ne pas re-jouer aveuglément createPost : vous risquez de créer un doublon. Pattern recommandé : générer un clientRequestId côté front et exposer une mutation idempotente côté back (non implémenté par la démo, à prévoir sur votre API réelle).

Étape 2 — Mise à jour

updatePost est un patch partiel : seuls les champs présents dans UpdatePostInput sont modifiés. Laisser body vide ne le vide pas — il faut l'envoyer explicitement à "".

▶ EssayerupdatePostPOST https://graphqlzero.almansi.me/api
Met à jour uniquement le titre. Le body reste inchangé.
Query
Variables
Réponse
Cliquez sur Exécuter pour lancer la requête.

Pièges courants

  • ID invalide → retour null, pas d'erreur GraphQL. Traiter côté client.
  • Concurrence → deux updates simultanés ne fusionnent pas. Pour un scénario collaboratif, positionner une version optimiste (If-Match / ETag header) côté backend.

Étape 3 — Suppression

Un simple appel deletePost(id). La réponse est un booléen — ne pas l'interpréter comme un état d'erreur.

▶ EssayerdeletePostPOST https://graphqlzero.almansi.me/api
Retourne true si le post a été supprimé, false s'il était déjà absent.
Query
Variables
Réponse
Cliquez sur Exécuter pour lancer la requête.

Scénario complet dans l'IDE

Pour répéter le cycle sur un même ID (create → update → delete), le playground ci-dessous pré-charge les 4 opérations sous forme d'onglets. Enchaînez les requêtes : l'ID retourné à l'étape 1 peut être injecté dans les variables des étapes suivantes.

⚡ IDE intégréCycle éditorial completPOST https://graphqlzero.almansi.me/api
4 onglets : list, create, update, delete. Idéal pour tester un scénario de bout-en-bout.
Chargement de GraphiQL...

Voir aussi

  • Process Utilisateurs — relation post.user, contexte auteur
  • Hub API — signature complète des mutations + types CreatePostInput / UpdatePostInput dépliés inline