🔥 Firehook

Blog · api rest

REST vs GraphQL vs RPC : comment choisir

Comparaison claire et orientee decision entre REST, GraphQL et RPC, avec les compromis performance et operations.

Cube passerelle API glossy relie a plusieurs services, symbolisant les styles d'API

Partir des cas d'usage

Le bon style d'API est celui qui colle a vos besoins. REST est parfait pour des ressources et du CRUD. GraphQL est utile quand les clients ont des vues diverses. RPC est naturel pour les actions et workflows.

Commencer par une mode au lieu des contraintes produit est un risque.

REST : previsible et compatible

REST s'aligne sur HTTP, ce qui facilite le cache, le logging et le debug. L'ecosysteme web comprend REST par defaut.

La limite est la flexibilite : si un client veut une vue custom, REST demande plus d'endpoints ou des parametres.

GraphQL : flexible mais plus lourd

GraphQL permet aux clients de demander exactement les champs necessaires. Cela peut reduire la bande passante.

Mais cela ajoute de la complexite serveur : resolvers, schema, cache et risques de performance.

RPC : clair pour les actions

RPC est efficace quand l'API est une liste de commandes : `RunReport`, `SyncDevices`. Pas besoin de forcer la ressource.

En contrepartie, on perd les benefices natifs d'HTTP. Il faut definir ses propres conventions.

Performance et cache

REST tire parti du cache HTTP. GraphQL/RPC demandent souvent un cache sur mesure.

Si la lecture est critique, REST est plus simple a optimiser. Si la flexibilité prime, GraphQL peut valoir le cout.

Erreurs et observabilite

REST utilise les codes HTTP. GraphQL/RPC mettent souvent les erreurs dans le body. Cela change le monitoring.

Si vous vous basez sur les status, REST est plus direct. Sinon, ajoutez des metriques d'erreurs explicites.

Quand un hybride est pertinent

Beaucoup de systemes mixent : REST pour les ressources, RPC pour les actions, GraphQL pour l'agregation. C'est valide si les frontieres sont claires.

Le danger est le melange sans regle. Definissez ou chaque style est autorise.

Guide de decision

REST pour la simplicite et le cache. GraphQL pour des vues clients variees. RPC pour des workflows non orientés ressources.

Commencez simple : ajouter un second style plus tard est souvent plus sain.

FAQ

GraphQL est-il toujours plus rapide que REST ?
Pas toujours. GraphQL reduit le sur-fetching mais peut ajouter du cout serveur et du cache complexe.
Peut-on melanger REST et RPC ?
Oui. Beaucoup de systemes utilisent REST pour les ressources et RPC pour des workflows.
REST est-il depasse ?
Non. REST reste le style le plus courant et souvent le plus simple.
GraphQL remplace-t-il les codes HTTP ?
GraphQL renvoie souvent 200 avec un objet d'erreur, ce qui change la detection des echec.
Quel est le choix le plus simple pour une petite API ?
REST est generalement le plus simple car il s'appuie sur HTTP et des outils standards.