独自の Web APIを開発するには、プレフィックス認証 を利用すると JWT認証と RESTful なルーティングを簡単に実装する事ができます。
標準では、Api
、Api/Admin
というプレフィックスが定義済です。RESTを有効化 するだけで特別な設定をせずともプレフィックス認証が利用可能です。
Api
というプレフィックス認証を利用する場合は、 Controller 内に、Api
フォルダを作成し、その中にコントローラーを作成します。コントローラーは、BaserCore\Controller\Api\BcApiController
を継承します。
class SampleController extends BcApiController
{
}
その際、次のURLでアクセスすることができます。
https://localhost/baser/api/plugin-name/controller_name/action_name.json
また、Api/Admin
というプレフィックスは、認証が必要となる領域となります。こちらを利用する場合は、Controller 無いに、Api/Admin
フォルダを作成し、その中にコントローラーを作成します。コントローラーは、BaserCore\Controller\Api\Admin\BcAdminApiController
を継承します。
class SampleController extends BcAdminApiController
{
}
その際、次のURLでアクセスすることができます。
https://localhost/baser/api/admin/plugin-name/controller_name/action_name.json
認証が必要な領域において、特定のアクションを認証なしでアクセスできるようにするためには、 initialize
メソッドで許可するメソッドを定義します。
public function initialize(): void
{
parent::initialize();
$this->Authentication->allowUnauthenticated(['allowed_action_name']);
}
コントローラーにおいて、データーベースの処理における Exception は次のようにコントロールします。
'データベース処理中にエラーが発生しました。' . $e->getMessage()
BcAdminApiController
を継承している場合、コントローラー内のいて、次のメソッドでログイン状態、かつ、 USE_CORE_ADMIN_API
が有効になっているかを確認する事ができます。
if(!$this->isAdminApiEnabled()) {
throw new ForbiddenException()
}