ทรัพยากร 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เส้นทาง API และคอนโทรลเลอร์ทรัพยากร
- ทรัพยากร API และการตอบกลับ JSON
- การตรวจสอบสิทธิ์ด้วย Laravel Sanctum
- การจำกัดอัตราและการกำหนดเวอร์ชัน API