ここまでの作業で API を用いて個別コメントの取得と一覧での取得ができるようになりました.個別に取得した JSON データは全体が "data"
というキーでラップされています.
C:\Users\Rinsaka>curl http://192.168.56.101:8000/api/comments/1/ ⏎ {"data":{"id":1,"title":"最初のコメント","body":"最初のコメントです!","updated_at":"2023-10-02T10:10:10.000000Z"}} C:\Users\Rinsaka>
また,一覧で取得した場合も全体が "data"
というキーでラップされています.
C:\Users\Rinsaka>curl http://192.168.56.101:8000/api/comments/ ⏎ {"data":[{"id":1,"title":"最初のコメント","body":"最初のコメントです!","updated_at":"2023-10-02T10:10:10.000000Z"},{"id":2,"title":"2つ目","body":"2つ目のコメントです!","updated_at":"2023-10-02T10:20:10.000000Z"},{"id":3,"title":"<三個目>のコメント","body":"シーダによってテストデータを設定します.","updated_at":"2023-10-02T10:30:10.000000Z"}]} C:\Users\Rinsaka>
ここではデータのラップを変更して,取得したデータの種類がキーからわかるようにします.
データのラップの指定は次のとおり,$wrap
メンバ変数を設定するだけで可能です.まず,個別表示のラップを変更します.
app/Http/Resources/CommentResource.php
<?php
namespace App\Http\Resources;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
use Illuminate\Support\Carbon;
class CommentResource extends JsonResource
{
/**
* 適用する「データ」ラッパー
*
* @var string|null
*/
public static $wrap = 'comment';
/**
* Transform the resource into an array.
*
* @return array<string, mixed>
*/
public function toArray(Request $request): array
{
...(以下略)...
再び接続すると,個別表示のラップが "comment"
になったことがわかりました.
C:\Users\Rinsaka>curl http://192.168.56.101:8000/api/comments/1/ ⏎ {"comment":{"id":1,"title":"最初のコメント","body":"最初のコメントです!","updated_at":"2023-10-02T10:10:10.000000Z"}} C:\Users\Rinsaka>
続いて一覧表示のラップも同じように変更します.
app/Http/Resources/CommentCollection.php
<?php
namespace App\Http\Resources;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\ResourceCollection;
class CommentCollection extends ResourceCollection
{
/**
* 適用する「データ」ラッパー
*
* @var string|null
*/
public static $wrap = 'comments';
/**
* Transform the resource collection into an array.
*
* @return array<int|string, mixed>
*/
public function toArray(Request $request): array
{
...(以下略)...
API に接続してコメント一覧を取得するとラップが "comments"
になったことが確認できました.
C:\Users\Rinsaka>curl http://192.168.56.101:8000/api/comments/ ⏎ {"comments":[{"id":1,"title":"最初のコメント","body":"最初のコメントです!","updated_at":"2023-10-02T10:10:10.000000Z"},{"id":2,"title":"2つ目","body":"2つ目のコメントです!","updated_at":"2023-10-02T10:20:10.000000Z"},{"id":3,"title":"<三個目>のコメント","body":"シーダによってテストデータを設定します.","updated_at":"2023-10-02T10:30:10.000000Z"}]} C:\Users\Rinsaka>