11
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Sajya】Laravel Sajyaの簡単な使い方まとめ

Posted at

Laravel Sajyaの導入から基本的な使い方まで

使い方を簡単にまとめたものになります。
英語が得意な方は公式をご覧ください。

Laravel Sajyaとは

Laravelフレームワーク向けにJSON-RPC 2.0サーバーの仕様を簡単に実装することを目指したオープンソースプロジェクトだそうです。API作成に便利かも?

導入

まずは、Laravel Sajyaをプロジェクトに導入します。以下のコマンドを実行して、Sajyaをインストールします

ターミナル
composer require sajya/server

Procedureファイル作成

以下のコマンドでファイルを作成します

ターミナル
php artisan make:procedure TestProcedure

作成したファイルにテスト用のコードを入力します(メソッド以外ほぼ自動生成されます)

declare(strict_types=1);

namespace App\Http\Procedures;

use Sajya\Server\Procedure;


class TestProcedure extends Procedure 
{
    /** 
     * The name of the procedure that will be 
     * displayed and taken into account in the search 
     */ 
    public static string $name = 'test';

    /**
     * Execute the procedure.
     *
     * @return string
     */
    public function ping()
    {
        return 'pong';
    }
}

ルートの設定(エンドポンイント)

次に、Sajyaのルートを設定します。routeファイルに以下のコードを追加します

use Illuminate\Support\Facades\Route;
use App\Http\Procedures\TestProcedure;

Route::rpc('/v1', [TestProcedure::class])->name('rpc.endpoint');

上記のコードでは、/v1というエンドポイントに対して、TestProcedureクラスを割り当てています。

APIテスト

まずは、ローカル環境のサーバーを立ち上げます。

次にcurlを用いてリクエストを送信します。(私はGitBashを使用していますが、自分の環境に合わせてください)

ターミナル
curl --location --request POST 'http://127.0.0.1:8000/api/v1'
--header 'Content-Type: application/json'
--data-raw '{ 
        "jsonrpc":"2.0",
        "method":"test.ping",
        "id":1
}'

※Postmanのようなツールを使えばもっと簡単ですし、毎回コマンド打たなくても良くなります。

成功すれば下記のようなレスポンスが返ってきます。

{
    "id": "1",
    "result": "pong",
    "jsonrpc": "2.0"
}

エラーハンドリングについて

Exceptionファイルを作成し、throwします

Excepotionファイル作成

以下のコマンドでファイルを作成します

ターミナル
php artisan make:exception ErrorTest

次に、テスト用にコードを入力します(ほとんど自動生成されます)

namespace App\Exceptions;

use Sajya\Server\Exceptions\RpcException;

class ErrorTest extends RpcException
{
    /**
     * Get the default error message for the exception.
     * @return string 
     */ 
    protected function getDefaultMessage(): string
    {
        return 'Error Message Daze'; 
    }
    
    /**
     * Get the default error code for the exception.
     * @return int
     */
    protected function getDefaultCode(): int
    {
        return -13000;
    }
}

Procedureファイル編集

先ほど作成したProcedureファイルを以下のように編集します

namespace App\Http\Procedures;

use App\Exceptions\ErrorTest; 
use Sajya\Server\Procedure;

class TennisProcedure extends Procedure
{
    public static string $name = 'test';
    
    public function ping()
    {
        throw new ErrorTest();
    }
}

直接throwしていますが、条件を付けることももちろん可能です。
これでリクエストを送信すると以下のようなエラーレスポンスが返ってきます。

{ 
    "id": "1",
    "error": {
        "code": -13000,
        "message": "Error Message Daze."
        ....
    },
    "jsonrpc": "2.0"
}

参考サイト


記事を読んでくださった方は、是非弊社開発課のXもフォローしてね:pray:
毎日エンジニアに向けた情報発信を行っています:muscle:

11
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?