Ответ
JSON-RPC (JSON Remote Procedure Call) — это легковесный протокол удаленного вызова процедур (RPC), использующий JSON (RFC 7159) в качестве формата данных. Он позволяет клиенту вызывать методы на сервере, передавая структурированные параметры, и получать структурированный ответ.
Основные характеристики:
- Простота: Минимальный набор правил и заголовков.
- Транспортная независимость: Может работать поверх HTTP, WebSockets, TCP или даже через файлы.
- Поддержка уведомлений (запрос без
id, на который не ожидается ответ) и пакетных вызовов (массив запросов в одном сообщении).
Структура запроса и ответа (версия 2.0):
// ЗАПРОС от клиента
{
"jsonrpc": "2.0",
"method": "calculateSum",
"params": [10, 20],
"id": 123
}
// УСПЕШНЫЙ ОТВЕТ от сервера
{
"jsonrpc": "2.0",
"result": 30,
"id": 123
}
// ОТВЕТ С ОШИБКОЙ
{
"jsonrpc": "2.0",
"error": {
"code": -32601,
"message": "Method not found"
},
"id": 123
}
Использование в Java-экосистеме: Для реализации JSON-RPC сервера или клиента можно использовать библиотеки:
- jsonrpc4j — популярная легковесная библиотека.
- Интеграция с Spring Boot через модули
spring-boot-starter-jsonrpcили создание REST-контроллеров, обрабатывающих JSON-RPC сообщения. - GraalVM Truffle включает реализацию JSON-RPC для отладки.
Типичный сценарий: Микросервисная архитектура, где требуется простой и эффективный протокол для межсервисного взаимодействия, более структурированный, чем plain REST, но менее тяжелый, чем gRPC или SOAP.