composer require league/fractal
Create folder app/Service
and add file JsonApiAdapter.php
and Transformer.php
.
<?php
namespace App\Http\Controllers;
use App\Services\JsonApiAdapter;
use App\User;
class UserController
{
public function index()
{
$users = User::paginate(5);
return $this->adapter->setTransformer(new UserTransformer())
->setStatusCode(200)
->render($users);
}
public function show($id)
{
$user = User::find($id);
return $this->adapter->setTransformer(new UserTransformer())
->setStatusCode(201)
->render($user);
}
}
{
"data": {
"type": "users",
"id": "1",
"attributes": {
"name": "Mrs. Lila Swift II",
"email": "jonatan.zieme@hotmail.com"
},
"links": {
"self": "http://0.0.0.0:8000/users/1"
}
}
}
{
"data": [
{
"type": "users",
"id": "6",
"attributes": {
"name": "Mr. Tristian Padberg V",
"email": "candida48@hotmail.com"
},
"links": {
"self": "http://0.0.0.0:8000/users/6"
}
},
{
"type": "users",
"id": "7",
"attributes": {
"name": "Miss Kaylee Toy",
"email": "rzemlak@schneider.com"
},
"links": {
"self": "http://0.0.0.0:8000/users/7"
}
},
{
"type": "users",
"id": "8",
"attributes": {
"name": "Nils Dach",
"email": "heidi.yundt@gmail.com"
},
"links": {
"self": "http://0.0.0.0:8000/users/8"
}
},
{
"type": "users",
"id": "9",
"attributes": {
"name": "Elmer Johnson III",
"email": "wfeest@hotmail.com"
},
"links": {
"self": "http://0.0.0.0:8000/users/9"
}
},
{
"type": "users",
"id": "10",
"attributes": {
"name": "Rahsaan Hane IV",
"email": "katlyn86@treutel.com"
},
"links": {
"self": "http://0.0.0.0:8000/users/10"
}
}
],
"meta": {
"total": 50,
"count": 5
},
"links": {
"self": "http://0.0.0.0:8000/users?page=2",
"first": "http://0.0.0.0:8000/users?page=1",
"prev": "http://0.0.0.0:8000/users?page=1",
"next": "http://0.0.0.0:8000/users?page=3",
"last": "http://0.0.0.0:8000/users?page=10"
}
}