pub struct JsonRpcResponse {
pub jsonrpc: String,
pub result: Option<Value>,
pub error: Option<Value>,
pub id: Option<RequestId>,
}Expand description
JSON-RPC 2.0 Response Message
Represents the response to a JSON-RPC request. Contains either a successful result or error information, but never both (mutual exclusion enforced by JSON-RPC spec).
§JSON-RPC 2.0 Specification Compliance
jsonrpc: MUST be exactly “2.0”result: MUST exist and contain the result if the call succeeded (omitted on error)error: MUST exist and contain error details if the call failed (omitted on success)id: MUST be the same as the request that triggered this response, or null for parse errors
§Examples
use airsprotocols_mcp::protocol::{JsonRpcResponse, JsonRpcMessageTrait, RequestId};
use serde_json::json;
// Success response
let success = JsonRpcResponse::success(
json!({"result": "operation completed"}),
RequestId::new_number(1)
);
// Use trait methods for serialization
let json = success.to_json().unwrap();
let parsed = JsonRpcResponse::from_json(&json).unwrap();
assert_eq!(success, parsed);Fields§
§jsonrpc: StringProtocol version - always “2.0” for JSON-RPC 2.0 compliance
result: Option<Value>Result of successful method invocation (mutually exclusive with error)
error: Option<Value>Error information for failed method invocation (mutually exclusive with result)
id: Option<RequestId>Request identifier from the original request (null for parse errors)
Implementations§
Source§impl JsonRpcResponse
impl JsonRpcResponse
Sourcepub fn success(result: Value, id: RequestId) -> Self
pub fn success(result: Value, id: RequestId) -> Self
Create a successful JSON-RPC 2.0 response
§Parameters
result: The successful result of the method invocationid: Request identifier from the original request
§Examples
use airsprotocols_mcp::protocol::{JsonRpcResponse, RequestId};
use serde_json::json;
let response = JsonRpcResponse::success(
json!({"status": "ok", "data": [1, 2, 3]}),
RequestId::new_string("req-456")
);Sourcepub fn error(error: Value, id: Option<RequestId>) -> Self
pub fn error(error: Value, id: Option<RequestId>) -> Self
Create an error JSON-RPC 2.0 response
§Parameters
error: Error information (should conform to JSON-RPC error object structure)id: Request identifier from the original request (None for parse errors)
§Examples
use airsprotocols_mcp::protocol::{JsonRpcResponse, RequestId};
use serde_json::json;
let response = JsonRpcResponse::error(
json!({"code": -32602, "message": "Invalid params"}),
Some(RequestId::new_number(789))
);Sourcepub fn error_standard(
code: i32,
message: &str,
data: Option<Value>,
id: Option<RequestId>,
) -> Self
pub fn error_standard( code: i32, message: &str, data: Option<Value>, id: Option<RequestId>, ) -> Self
Create a standardized JSON-RPC 2.0 error response
This function creates a properly formatted JSON-RPC 2.0 error response with the correct error object structure according to the specification.
§Parameters
code: JSON-RPC error code (use constants from error_codes module)message: Human-readable error messagedata: Optional additional error dataid: Request identifier from the original request (None for parse errors)
§Examples
use airsprotocols_mcp::protocol::{JsonRpcResponse, RequestId};
use airsprotocols_mcp::protocol::constants::error_codes;
let response = JsonRpcResponse::error_standard(
error_codes::INVALID_PARAMS,
"Missing required parameter 'name'",
Some(serde_json::json!({"parameter": "name"})),
Some(RequestId::new_number(123))
);Sourcepub fn parse_error(message: &str, data: Option<Value>) -> Self
pub fn parse_error(message: &str, data: Option<Value>) -> Self
Create a parse error response (-32700)
Sourcepub fn invalid_request(
message: &str,
data: Option<Value>,
id: Option<RequestId>,
) -> Self
pub fn invalid_request( message: &str, data: Option<Value>, id: Option<RequestId>, ) -> Self
Create an invalid request error response (-32600)
Sourcepub fn method_not_found(method: &str, id: Option<RequestId>) -> Self
pub fn method_not_found(method: &str, id: Option<RequestId>) -> Self
Create a method not found error response (-32601)
Trait Implementations§
Source§impl Clone for JsonRpcResponse
impl Clone for JsonRpcResponse
Source§fn clone(&self) -> JsonRpcResponse
fn clone(&self) -> JsonRpcResponse
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more