ガイド

レスポンス

モデルがJSONレスポンスに変換される仕組みについて学びます。

Orionは、Eloquentモデルと、APIクライアントに実際に返されるレスポンスとの間の変換レイヤーとしてAPIリソースを使用します。

これらのクラスが自動的に解決されるようにするには、App\Http\Resources\<model>ResourceまたはApp\Http\Resources\<model>CollectionResourceというパターンに従う必要があります。

たとえば、App\Models\Messageモデルがある場合、関連するリソースクラスはApp\Http\Resources\MessageResourceまたはApp\Http\Resources\MessageCollectionResourceになります。

アプリ内のリソースクラス名がこの命名規則に従っていない場合や、より明示的に指定したい場合は、コントローラーのprotected $resourceまたはprotected $collectionResourceプロパティに、完全修飾リソースクラス名を設定します。

<?php

namespace App\Http\Controllers\Api;

use App\Models\Message;
use App\Http\Resources\CustomMessageResource;
use App\Http\Resources\CustomMessageCollectionResource;

class MessagesController extends ApiController
{
    /**
     * @var string $model
     */
    protected $model = Message::class;

    /**
     * @var string $resource
     */
    protected $resource = CustomMessageResource::class;

    /**
     * @var string $collectionResource
     */
    protected $collectionResource = CustomMessageCollectionResource::class;
}
Orion\Http\Resources\ResourceクラスとOrion\Http\Resources\CollectionResourceクラスの両方で、便利なtoArrayWithMergeメソッドが利用できます。ぜひ確認してみてください。