Dev to webs {Coding…}

ร บทเรียนฟรีด้านการพัฒนาซอฟต์แวร์ ที่ครอบคลุมเนื้อหาหลากหลาย ตั้งแต่การเขียนโค้ดพื้นฐานไปจนถึงเทคนิคขั้นสูง

บทที่ 5: การใช้งาน Resource Collections

🔹 เกริ่นนำ

การส่งข้อมูล JSON จาก API ด้วย response()->json() เป็นวิธีพื้นฐาน แต่หากต้องการควบคุมโครงสร้าง response ให้เป็นระเบียบ สม่ำเสมอ และง่ายต่อการจัดการ Laravel มีระบบ API Resource และ Resource Collections ที่ช่วยจัดรูปแบบข้อมูลให้อัตโนมัติ

บทนี้จะแนะนำการใช้ Http Resources เพื่อจัดรูปแบบข้อมูล API อย่างมืออาชีพ และเหมาะกับระบบขนาดกลางถึงใหญ่

🔸 การสร้าง Resource

php artisan make:resource PostResource

จะได้ไฟล์ app/Http/Resources/PostResource.php

🔸 ตัวอย่าง PostResource

use Illuminate\Http\Resources\Json\JsonResource;

class PostResource extends JsonResource
{
    public function toArray($request)
    {
        return [
            'id' => $this->id,
            'title' => $this->title,
            'content' => $this->content,
            'created_at' => $this->created_at->toDateTimeString()
        ];
    }
}

🔸 การใช้ Resource กับ Model เดี่ยว

return new PostResource($post);

🔸 การใช้ Resource กับหลายรายการ (Collection)

return PostResource::collection(Post::all());

Laravel จะจัดการให้ทุก record ใน collection ถูกแปลงผ่าน resource อย่างสม่ำเสมอ

🔸 เพิ่ม metadata เพิ่มเติม

return PostResource::collection(Post::all())
    ->additional([
        'status' => 'success'
    ]);

💡 ใช้ Resource เพื่อแยก logic ของ response ออกจาก Controller ทำให้โค้ดสะอาดและทดสอบง่ายขึ้น