<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Bagaskara Wisnu Gunawan</title>
    <description>The latest articles on Forem by Bagaskara Wisnu Gunawan (@bagaskarawg).</description>
    <link>https://forem.com/bagaskarawg</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F305581%2Fab40ebcb-6576-46eb-9be9-5ffa3d729780.jpeg</url>
      <title>Forem: Bagaskara Wisnu Gunawan</title>
      <link>https://forem.com/bagaskarawg</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/bagaskarawg"/>
    <language>en</language>
    <item>
      <title>Create API in Laravel</title>
      <dc:creator>Bagaskara Wisnu Gunawan</dc:creator>
      <pubDate>Sun, 13 Aug 2023 07:48:52 +0000</pubDate>
      <link>https://forem.com/bagaskarawg/create-api-in-laravel-2l9l</link>
      <guid>https://forem.com/bagaskarawg/create-api-in-laravel-2l9l</guid>
      <description>&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Create Controller:&lt;br&gt;
&lt;code&gt;php artisan make:controller Api/V1/SportsController&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create API Resource:&lt;br&gt;
&lt;code&gt;php artisan make:resource SportsResource&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add API Routes in &lt;code&gt;routes/api.php&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;use App\Http\Controllers\Api\V1\SportsController;
...
Route::apiResource('sports', SportsController::class)
    -&amp;gt;only(['index', 'show']);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Open Controller (&lt;code&gt;app/Http/Controllers/Api/V1/SportsController.php&lt;/code&gt;) and add the methods like the following:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;?php

namespace App\Http\Controllers\Api\V1;

use App\Http\Controllers\Controller;
use App\Http\Resources\SportsResource;
use App\Models\Sport;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;

class SportsController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @response AnonymousResourceCollection&amp;lt;SportsResource&amp;gt;
     */
    public function index(): AnonymousResourceCollection
    {
        return SportsResource::collection(Sport::paginate());
    }

    /**
     * Display the specified resource.
     */
    public function show(string $id): SportsResource
    {
        return new SportsResource(Sport::findOrFail($id));
    }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Open the API Resource (&lt;code&gt;app/Http/Resources/SportsResource.php&lt;/code&gt;) and define the fields from the DB omitting &lt;code&gt;deleted_at&lt;/code&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...
    /**
     * Transform the resource into an array.
     *
     * @return array&amp;lt;string, mixed&amp;gt;
     */
    public function toArray(Request $request): array
    {
        return [
            'id' =&amp;gt; $this-&amp;gt;id,
            'name' =&amp;gt; $this-&amp;gt;name,
            'description' =&amp;gt; $this-&amp;gt;description,
            'created_at' =&amp;gt; $this-&amp;gt;created_at,
            'updated_at' =&amp;gt; $this-&amp;gt;updated_at,
        ];
    }
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>webdev</category>
      <category>laravel</category>
      <category>api</category>
    </item>
  </channel>
</rss>
