JSON-RPC
Protocole d'appel de procédure distante utilisant JSON pour l'encodage des données, permettant une communication client-serveur simple et standardisée.
Mis à jour le 4 janvier 2026
JSON-RPC est un protocole léger d'appel de procédure distante (RPC) sans état qui utilise JSON comme format d'encodage des données. Il permet aux clients d'invoquer des méthodes sur un serveur distant en transmettant des requêtes structurées et de recevoir des réponses dans un format standardisé. Largement adopté dans les architectures distribuées, JSON-RPC simplifie l'interaction entre systèmes hétérogènes grâce à sa simplicité et son indépendance vis-à-vis du transport.
Fondements du protocole
- Spécification simple définissant quatre types d'objets : requête, notification, réponse et erreur
- Format JSON pour l'encodage, facilitant le parsing et l'interopérabilité entre langages
- Indépendant du transport : fonctionne sur HTTP, WebSocket, TCP ou tout canal de communication
- Versionnement explicite (1.0, 2.0) garantissant la compatibilité et l'évolution contrôlée
Avantages du JSON-RPC
- Simplicité d'implémentation : spécification minimaliste facile à adopter dans tout langage
- Payload léger : structure JSON compacte réduisant la bande passante nécessaire
- Support natif des appels batch pour optimiser les communications multiples
- Gestion d'erreurs standardisée avec codes et messages structurés
- Écosystème mature avec bibliothèques disponibles pour la plupart des langages
Exemple concret de requête/réponse
// Requête JSON-RPC 2.0
const request = {
jsonrpc: "2.0",
method: "getUserProfile",
params: { userId: 12345 },
id: 1
};
// Réponse de succès
const successResponse = {
jsonrpc: "2.0",
result: {
id: 12345,
name: "Alice Martin",
email: "alice@example.com"
},
id: 1
};
// Réponse d'erreur standardisée
const errorResponse = {
jsonrpc: "2.0",
error: {
code: -32602,
message: "Invalid params",
data: { field: "userId", reason: "must be positive" }
},
id: 1
};
// Notification (sans réponse attendue)
const notification = {
jsonrpc: "2.0",
method: "logEvent",
params: { event: "user_login", timestamp: Date.now() }
};Mise en œuvre d'un serveur JSON-RPC
- Choisir une bibliothèque JSON-RPC adaptée à votre stack (jayson pour Node.js, json-rpc-2.0 pour TypeScript)
- Définir les méthodes exposées avec leur signature et validation des paramètres
- Implémenter la gestion d'erreurs avec codes standardisés (-32700 à -32603 pour erreurs protocole)
- Configurer le transport (HTTP POST endpoint ou WebSocket pour communication bidirectionnelle)
- Mettre en place logging et monitoring des appels pour tracer les performances
- Documenter l'API avec schémas JSON pour faciliter l'intégration côté client
Conseil d'architecture
Utilisez JSON-RPC 2.0 pour les communications internes entre microservices où la simplicité prime sur la découvrabilité. Pour les API publiques nécessitant HATEOAS et documentation auto-générée, préférez REST ou GraphQL. Combinez JSON-RPC avec WebSocket pour des systèmes temps réel nécessitant des appels bidirectionnels.
Outils et bibliothèques associés
- Jayson : bibliothèque Node.js mature supportant HTTP, TCP et WebSocket
- json-rpc-2.0 : implémentation TypeScript type-safe avec support async/await
- Python jsonrpcserver/client : écosystème complet pour Python avec validation
- Ethereum JSON-RPC : API standard pour interagir avec les nœuds blockchain
- Postman/Insomnia : outils de test supportant nativement les requêtes JSON-RPC
JSON-RPC représente une solution pragmatique pour les architectures nécessitant des appels de procédures distantes simples et performantes. Son adoption stratégique dans les systèmes distribués réduit la complexité d'intégration tout en maintenant une excellente interopérabilité. Pour les organisations cherchant à optimiser leurs communications inter-services sans la surcharge de protocoles plus lourds, JSON-RPC offre un équilibre idéal entre fonctionnalité et simplicité de maintenance.
