0Pricing
PHP Academy · บทเรียน

ทรัพยากร API และการตอบกลับ JSON

กำหนดรูปแบบผลลัพธ์ JSON ด้วย API Resources ของ Eloquent และ ResourceCollections

ทรัพยากร API และการตอบกลับ JSON เป็นบทเรียน PHP Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน PHP Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

ทรัพยากร API คืออะไร

Eloquent API Resources แปลงโมเดลและคอลเลกชันเป็นอาร์เรย์ที่พร้อมใช้งานกับ JSON ทำให้คุณควบคุมรูปแบบการตอบกลับ API ได้อย่างเต็มที่

การสร้างทรัพยากร

สร้างคลาสทรัพยากรด้วย Artisan

$ php artisan make:resource UserResource
# For collections:
$ php artisan make:resource UserCollection

ทรัพยากรพื้นฐาน

เขียนทับ toArray() เพื่อกำหนดโครงสร้าง JSON

<?php
namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;

class UserResource extends JsonResource
{
    public function toArray($request): array
    {
        return [
            "id"         => $this->id,
            "name"       => $this->name,
            "email"      => $this->email,
            "created_at" => $this->created_at->toISOString(),
        ];
    }
}

การส่งคืนทรัพยากร

ส่งคืนทรัพยากรจากตัวควบคุม ระบบจะห่อหุ้มโมเดลไว้ในคีย์ data โดยอัตโนมัติ

<?php
public function show(User $user): UserResource
{
    return new UserResource($user);
}
// Response: {"data": {"id": 1, "name": "Alice", ...}}

คอลเลกชันทรัพยากร

ห่อหุ้มคอลเลกชันของโมเดลด้วย ::collection()

<?php
public function index(): AnonymousResourceCollection
{
    return UserResource::collection(User::paginate(15));
}

ฟิลด์ตามเงื่อนไข

รวมฟิลด์เฉพาะเมื่อเงื่อนไขเป็นจริง โดยใช้ when()

<?php
return [
    "id"    => $this->id,
    "email" => $this->when($request->user()?->isAdmin(), $this->email),
    "token" => $this->whenLoaded("tokens", $this->tokens->first()->plainTextToken),
];

whenLoaded()

รวมความสัมพันธ์ตามเงื่อนไขเฉพาะเมื่อโหลดไว้แล้วเท่านั้น ช่วยหลีกเลี่ยงปัญหา N+1 ในการตอบกลับของทรัพยากร

<?php
return [
    "id"      => $this->id,
    "posts"   => PostResource::collection($this->whenLoaded("posts")),
    "profile" => new ProfileResource($this->whenLoaded("profile")),
];

ทรัพยากรซ้อนกัน

ซ้อนทรัพยากรไว้ภายในทรัพยากรอื่นเพื่อสร้างรูปแบบการตอบกลับที่มีรายละเอียดและระบุชนิดได้

<?php
return [
    "id"     => $this->id,
    "author" => new UserResource($this->author),
    "tags"   => TagResource::collection($this->tags),
];

ข้อมูลเมตาเพิ่มเติม

เพิ่มข้อมูลเมตาในการตอบกลับโดยเขียนทับ with()

<?php
public function with($request): array
{
    return [
        "meta" => ["version" => "1.0"],
    ];
}

การห่อหุ้ม

โดยค่าเริ่มต้น ทรัพยากรจะถูกห่อหุ้มไว้ในคีย์ data ปิดใช้การห่อหุ้มทั่วทั้งระบบด้วย JsonResource::withoutWrapping()

<?php
// In AppServiceProvider::boot():
JsonResource::withoutWrapping();

การแบ่งหน้าในทรัพยากร

ข้อมูลเมตาของการแบ่งหน้าจะถูกรวมโดยอัตโนมัติเมื่อคุณส่งตัวแบ่งหน้าให้กับคอลเลกชันทรัพยากร

<?php
return UserResource::collection(User::paginate(15));
// Response includes: data[], links{}, meta{}

การทดสอบทรัพยากร

ตรวจสอบโครงสร้างทรัพยากรในการทดสอบด้วย assertJson() หรือ assertJsonStructure()

<?php
$response->assertJsonStructure([
    "data" => ["id", "name", "email"]
]);

สรุป

ทรัพยากร API ควบคุมรูปแบบเอาต์พุต JSON ของคุณ ใช้ when() และ whenLoaded() สำหรับฟิลด์ตามเงื่อนไข ซ้อนทรัพยากรเพื่อจัดการความสัมพันธ์ ใช้ ::collection() สำหรับหลายโมเดล

ตรวจสอบอย่างรวดเร็ว

เมธอดใดจะรวมความสัมพันธ์ตามเงื่อนไขเฉพาะเมื่อโหลดไว้แล้ว

คำถามที่พบบ่อย

บทเรียน “ทรัพยากร API และการตอบกลับ JSON” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ทรัพยากร API และการตอบกลับ JSON” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส PHP Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ทรัพยากร API และการตอบกลับ JSON”

กำหนดรูปแบบผลลัพธ์ JSON ด้วย API Resources ของ Eloquent และ ResourceCollections คุณปฏิบัติ PHP Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน PHP Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน PHP Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “ทรัพยากร API และการตอบกลับ JSON” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน PHP Academy นี้ได้ไหม

ได้ บทเรียน PHP Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เส้นทาง API และคอนโทรลเลอร์ทรัพยากร
  2. ทรัพยากร API และการตอบกลับ JSON
  3. การตรวจสอบสิทธิ์ด้วย Laravel Sanctum
  4. การจำกัดอัตราและการกำหนดเวอร์ชัน API
← กลับไปที่ PHP Academy