概要
- リソースクラスを使ってレスポンスで返すJSONを定義していざレスポンスを返したところ、リソースクラスのtoArrayメソッドで指定したキーが
data
というキーに入ってレスポンスが返されてしまう。data
のキーを排除して1階層レスポンスのJSON情報を浅くしたい。
dataというキーはなぜ付与される?
-
data
キーはAPIに一貫性を持たせるため、laravelが自動で付与している。 - 具体的には下記で付与されている。
-
vendor/laravel/framework/src/Illuminate/Http/Resources/Json/JsonResource.php
vendor/laravel/framework/src/Illuminate/Http/Resources/Json/JsonResource.php/** * The "data" wrapper that should be applied. * * @var string|null */ public static $wrap = 'data';
-
対応方法1 すべてのレスポンスでdata
のキーを削除したい場合
-
app/Providers/AppServiceProvider.php
のbootメソッド内部に記載を行う。app/Providers/AppServiceProvider.phpuse Illuminate\Http\Resources\Json\JsonResource; public function boot() { JsonResource::withoutWrapping(); }
対応方法2 個々のレスポンスでdata
のキーを削除したい場合
-
個々のリソースクラスに下記の内容を追記する。
/** * The "data" wrapper that should be applied. * * @var string|null */ public static $wrap = null;