JSON-RPC Server for Laravel
Published on by Paul Redmond
JSON RPC Server is a package to build JSON-RPC 2.0 APIs using the Laravel framework. The package is designed to integrate a lightweight remote procedure call protocol that is simple to use:
namespace App\Http\Procedures; use Sajya\Server\Procedure; class TennisProcedure extends Procedure{ /** * The name of the procedure that will be * displayed and taken into account in the search */ public static string $name = 'tennis'; /** * Execute the procedure. * * @return string */ public function ping() { return 'pong'; }}
Given the above procedure class, this package enables you to call it easily using the following route:
use App\Http\Procedures\TennisProcedure; Route::rpc('/v1/endpoint', [TennisProcedure::class]) ->name('rpc.endpoint');
Here's an example of calling the endpoint:
curl 'http://127.0.0.1:8000/api/v1/endpoint' \ --data-binary '{"jsonrpc":"2.0","method":"tennis@ping","id":1}' # Result: {"id":"1","result":"pong","jsonrpc":"2.0"}
Using JSON-RPC with this package, you can batch-process work that allows you to optimize your application by combining multiple requests into a single JSON object:
[ { "jsonrpc": "2.0", "method": "message@create", "params": "...", "id": 1 }, { "jsonrpc": "2.0", "method": "message@create", "params": "...", "id": 2 }]
This package can also help ease building a JSON RPC API with the following features:
- Authentication
- Data Validation within procedures
- API documentation generation
- Parameter binding resolution in procedures, including model binding
- Feature testing of JSON RPC procedures
- Gzip compression middleware
You can learn more about this package, get full installation instructions, and view the source code on GitHub. This package also has useful documentation to get started.