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

การจัดการการตอบกลับและข้อผิดพลาดของ API

ตรวจสอบรหัสสถานะ HTTP จัดการข้อผิดพลาด และแยกวิเคราะห์ข้อมูลที่ API ส่งกลับ

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

ตรวจสอบรหัสสถานะ HTTP

ตรวจสอบรหัสสถานะ HTTP ก่อนประมวลผลเนื้อหาการตอบกลับเสมอ

<?php
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($statusCode !== 200) {
    throw new RuntimeException("API error: HTTP $statusCode");
}

แยกวิเคราะห์การตอบกลับ JSON

ถอดรหัสเนื้อหา JSON และจัดการข้อผิดพลาดในการแยกวิเคราะห์

<?php
$body = curl_exec($ch);
$data = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
// $data is now a PHP array

เนื้อหาการตอบกลับเมื่อเกิดข้อผิดพลาด

API มักส่งรายละเอียดข้อผิดพลาดมาในเนื้อหาการตอบกลับ แม้จะเป็นการตอบกลับสถานะ 4xx/5xx ก็ตาม ควรแยกวิเคราะห์และบันทึกเนื้อหาดังกล่าวเมื่อเกิดข้อผิดพลาดเสมอ

<?php
if ($statusCode >= 400) {
    $err = json_decode($body, true);
    $msg = $err["message"] ?? "Unknown API error";
    throw new RuntimeException("API $statusCode: $msg");
}

ข้อผิดพลาดด้านการส่งข้อมูลของ cURL

ข้อผิดพลาดเครือข่าย (DNS ล้มเหลว การหมดเวลา) แยกจากข้อผิดพลาด HTTP ให้ตรวจสอบ curl_errno() ก่อน แล้วจึงตรวจสอบสถานะ HTTP

<?php
if (curl_errno($ch)) {
    throw new RuntimeException("Transport error: ".curl_error($ch));
}

การห่อหุ้มในฟังก์ชันช่วยเหลือ

ห่อหุ้มการตั้งค่า cURL การดำเนินการ และการจัดการข้อผิดพลาดไว้ในฟังก์ชันที่นำกลับมาใช้ใหม่ได้

<?php
function httpGet(string $url, string $token): array {
    $ch = curl_init($url);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPHEADER     => ["Authorization: Bearer $token"],
        CURLOPT_TIMEOUT        => 15,
    ]);
    $body   = curl_exec($ch);
    $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $errno  = curl_errno($ch);
    curl_close($ch);
    if ($errno) throw new RuntimeException(curl_strerror($errno));
    if ($status >= 400) throw new RuntimeException("HTTP $status");
    return json_decode($body, true, 512, JSON_THROW_ON_ERROR);
}

ตรรกะการลองใหม่

สำหรับข้อผิดพลาดชั่วคราว (503 Service Unavailable และการหมดเวลา) ให้ใช้การหน่วงเวลาแบบทวีคูณพร้อมขีดจำกัดจำนวนครั้งที่ลองใหม่

<?php
$maxRetries = 3;
for ($attempt = 0; $attempt < $maxRetries; $attempt++) {
    try {
        $data = httpGet($url, $token);
        break;
    } catch (RuntimeException $e) {
        if ($attempt === $maxRetries - 1) throw $e;
        sleep(2 ** $attempt);
    }
}

ส่วนหัวจำกัดอัตรา

API จำนวนมากมีส่วนหัวจำกัดอัตรา ได้แก่ X-RateLimit-Remaining และ X-RateLimit-Reset ให้อ่านค่าเหล่านี้เพื่อหลีกเลี่ยงการใช้งานเกินขีดจำกัด

<?php
curl_setopt($ch, CURLOPT_HEADER, true);
// Parse headers from the response string

การแคชการตอบกลับ

แคชการตอบกลับจาก API เพื่อหลีกเลี่ยงการเรียกเครือข่ายที่ซ้ำซ้อน จัดเก็บการตอบกลับใน Redis หรือ APCu โดยใช้ TTL ที่สอดคล้องกับข้อกำหนดด้านความใหม่ของข้อมูล

การบันทึกการเรียก API

บันทึก URL ของคำขอ เมธอด รหัสสถานะ และเวลาแฝง เพื่อช่วยแก้ไขข้อบกพร่องและตรวจสอบสถานะการทำงานของ API ในระบบจริง

การหมดเวลาเป็นข้อผิดพลาด

การหมดเวลาของ cURL (CURLE_OPERATION_TIMEDOUT) เป็นข้อผิดพลาดด้านการส่งข้อมูล ไม่ใช่ข้อผิดพลาด HTTP ควรจัดการกรณีนี้อย่างชัดเจน

ข้อผิดพลาดใบรับรอง SSL

การตรวจสอบใบรับรองล้มเหลว (CURLE_SSL_CACERT) หมายความว่าใบรับรองของเซิร์ฟเวอร์ไม่น่าเชื่อถือ ให้อัปเดตชุดใบรับรอง CA และอย่าปิดการตรวจสอบ

สรุป

ตรวจสอบหมายเลขข้อผิดพลาดของ cURL ก่อนเสมอ แล้วจึงตรวจสอบสถานะ HTTP แยกวิเคราะห์เนื้อหาข้อผิดพลาด ห่อหุ้มตรรกะไว้ในฟังก์ชันที่นำกลับมาใช้ใหม่ได้ และใช้การลองใหม่สำหรับข้อผิดพลาดชั่วคราว

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ควรตรวจสอบสิ่งใดก่อน ระหว่างหมายเลขข้อผิดพลาดของ cURL กับสถานะ HTTP

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

บทเรียน “การจัดการการตอบกลับและข้อผิดพลาดของ API” ฟรีหรือไม่

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

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

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

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

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

บทเรียน “การจัดการการตอบกลับและข้อผิดพลาดของ API” ใช้เวลานานแค่ไหน

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

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

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

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

  1. การเข้ารหัสและถอดรหัส JSON
  2. การส่งคำขอ HTTP ด้วย cURL
  3. การจัดการการตอบกลับและข้อผิดพลาดของ API
  4. การสร้างไคลเอ็นต์ API อย่างง่าย
← กลับไปที่ PHP Academy