Skip to main content

jsonrpc

Attribute Macro jsonrpc 

Source
#[jsonrpc]
Expand description

Generate JSON-RPC 2.0 handlers over HTTP.

§Example

use server_less::jsonrpc;

struct Calculator;

#[jsonrpc]
impl Calculator {
    /// Add two numbers
    fn add(&self, a: i32, b: i32) -> i32 {
        a + b
    }

    /// Multiply two numbers
    fn multiply(&self, a: i32, b: i32) -> i32 {
        a * b
    }
}

// POST /rpc with {"jsonrpc": "2.0", "method": "add", "params": {"a": 1, "b": 2}, "id": 1}
// Returns: {"jsonrpc": "2.0", "result": 3, "id": 1}

This generates:

  • Calculator::jsonrpc_router() returning an axum Router
  • Calculator::jsonrpc_handle(request) to handle JSON-RPC requests
  • Calculator::jsonrpc_methods() listing available methods

Supports JSON-RPC 2.0 features:

  • Named and positional parameters
  • Batch requests (array of requests)
  • Notifications (requests without id)