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 :
createPostgénère l'ID — le conserver côté client dès la réponse.updatePostest un patch partiel — seuls les champs fournis sont modifiés, les autres restent intacts.deletePostrenvoietrue/false— lefalsen'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.
É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.
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 à "".
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.
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.
Voir aussi
- Process Utilisateurs — relation
post.user, contexte auteur - Hub API — signature complète des mutations + types
CreatePostInput/UpdatePostInputdépliés inline