Quick Start
Install via Composer
Navigate to your project directory and install Sajya using Composer:
composer require sajya/server
Creating Procedures
All actions are described in Procedure
classes; it is a familiar controller. Still, it must contain the static property name
, which will determine the request’s execution. Actions can be performed in any public method.
You can create a procedure class by executing the artisan
command:
php artisan make:procedure TennisProcedure
Will create a new file, TennisProcedure.php
in the directory app/Http/Procedures
.
Let’s call the new procedure tennis
. To do this, change the name
property and add the pong
returning value to the ping
method to get this content:
declare(strict_types=1);
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';
}
}
Route Registration
Like the controller, the procedure needs to be registered in the routes file, define it in the file api.php
:
use Illuminate\Support\Facades\Route;
use App\Http\Procedures\TennisProcedure;
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/
Route::rpc('/v1/endpoint', [TennisProcedure::class])
->name('rpc.endpoint');
Note that the second argument, we pass an array that contains only the necessary classes. Thus, in the future, we will add a second version of our API without conflicts.
Starting a Local Server
To start the project, you can use the built-in server:
php artisan serve
Open a browser and go to http://localhost:8000
. If everything works, you will see the welcome page. Later, when you are done, stop the server by pressing Ctrl + C
in the terminal you are using.
Check response
To turn to the required method, you must pass the name specified in the class and the necessary process with the delimiter “@” character. In our case, it will be: tennis@ping
.
Let’s make a curl
call to the new API:
curl --location --request POST 'http://127.0.0.1:8000/api/v1/endpoint' \
--header 'Content-Type: application/json' \
--data-raw '{
"jsonrpc":"2.0",
"method":"tennis@ping",
"id":1
}'
The result will be the resulting JSON string:
{
"id": "1",
"result": "pong",
"jsonrpc": "2.0"
}