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

การสร้างไคลเอ็นต์ API อย่างง่าย

ห่อการเรียกใช้ cURL ไว้ในคลาสไคลเอ็นต์ API ของ PHP ที่นำกลับมาใช้ใหม่ได้

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

เหตุใดจึงควรห่อหุ้ม cURL

คลาสไคลเอ็นต์ API โดยเฉพาะจะรวมการยืนยันตัวตน URL พื้นฐาน การจัดการข้อผิดพลาด และการบันทึกข้อมูลการทำงานไว้ในที่เดียว ช่วยหลีกเลี่ยงโค้ดพื้นฐานที่ซ้ำกันทั่วทั้งโค้ดเบส

โครงร่างคลาสไคลเอ็นต์

ไคลเอ็นต์ API ขั้นต่ำที่มี URL พื้นฐานและโทเค็นยืนยันตัวตน

<?php
class ApiClient {
    public function __construct(
        private string $baseUrl,
        private string $token
    ) {}

    private function request(string $method, string $path, array $data = []): array {
        $ch = curl_init($this->baseUrl.$path);
        curl_setopt_array($ch, [
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_CUSTOMREQUEST  => $method,
            CURLOPT_HTTPHEADER     => [
                "Authorization: Bearer ".$this->token,
                "Content-Type: application/json",
                "Accept: application/json",
            ],
        ]);
        if (!empty($data)) {
            curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
        }
        $body   = curl_exec($ch);
        $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
        if ($status >= 400) throw new RuntimeException("API error $status: $body");
        return json_decode($body, true, 512, JSON_THROW_ON_ERROR);
    }
}

เมธอด GET และ POST

เปิดเผยเมธอดอำนวยความสะดวกที่ส่งต่องานให้เมธอดส่วนตัว request()

<?php
public function get(string $path): array {
    return $this->request("GET", $path);
}

public function post(string $path, array $body): array {
    return $this->request("POST", $path, $body);
}

การใช้ไคลเอ็นต์

สร้างอินสแตนซ์และเรียกใช้เมธอดที่มีชนิดข้อมูลกำกับ แทนการใช้ cURL โดยตรง

<?php
$client = new ApiClient("https://api.example.com", $apiToken);
$users  = $client->get("/v1/users");
$user   = $client->post("/v1/users", ["name" => "Alice", "email" => "alice@example.com"]);

พารามิเตอร์สตริงคำค้น

สร้างสตริงคำค้นด้วย http_build_query()

<?php
public function get(string $path, array $params = []): array {
    $qs = $params ? "?".http_build_query($params) : "";
    return $this->request("GET", $path.$qs);
}
// Usage:
$users = $client->get("/v1/users", ["page" => 1, "limit" => 20]);

ฟังก์ชันช่วยจัดการการแบ่งหน้า

เพิ่มฟังก์ชันช่วยเพื่อรวบรวมข้อมูลทุกหน้าของ API ที่แบ่งหน้าโดยอัตโนมัติ

<?php
public function paginate(string $path): array {
    $all  = [];
    $page = 1;
    do {
        $res  = $this->get($path, ["page" => $page++]);
        $all  = array_merge($all, $res["data"]);
    } while ($res["has_more"] ?? false);
    return $all;
}

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

แทรกชั้นแคชเพื่อหลีกเลี่ยงคำขอที่ซ้ำซ้อน

<?php
public function getCached(string $path, int $ttl = 60): array {
    $key = "api:".md5($path);
    if (apcu_exists($key)) return apcu_fetch($key);
    $data = $this->get($path);
    apcu_store($key, $data, $ttl);
    return $data;
}

การบันทึกข้อมูลการทำงาน

เพิ่มตัวบันทึก PSR-3 เพื่อบันทึกคำขอและการตอบกลับทุกครั้งสำหรับการแก้ไขข้อบกพร่อง

<?php
public function __construct(
    private string $baseUrl,
    private string $token,
    private ?\Psr\Log\LoggerInterface $logger = null
) {}

การทดสอบไคลเอ็นต์

ในการทดสอบหน่วย ให้แทนที่ cURL ด้วยตัวจัดการ HTTP จำลอง (เช่น Guzzle MockHandler) เพื่อให้การทดสอบทำงานได้โดยไม่ต้องเรียกเครือข่ายจริง

Guzzle เป็นทางเลือก

สำหรับการใช้งานจริง ให้พิจารณา Guzzle (composer require guzzlehttp/guzzle) ซึ่งมีมิดเดิลแวร์ คำขอแบบอะซิงโครนัส และ API ที่ออกแบบมาอย่างดี

ตัวเลือก HTTP_FOUNDATION

Symfony HttpClient (symfony/http-client) เป็นทางเลือกที่ยอดเยี่ยมอีกอย่างหนึ่ง โดยมีอินเทอร์เฟซที่สะอาดและรองรับการทำงานแบบอะซิงโครนัสอย่างเต็มรูปแบบ

สรุป

การห่อหุ้ม cURL ไว้ในคลาสช่วยลดโค้ดซ้ำ รวมการจัดการข้อผิดพลาดไว้ในที่เดียว และทำให้การทดสอบง่ายขึ้น เปิดเผยเมธอดที่มีชนิดข้อมูลกำกับ (get, post) แทนการใช้คำกริยา HTTP โดยตรง

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

ฟังก์ชัน PHP ใดใช้สร้างสตริงคำค้นของ URL

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

บทเรียน “การสร้างไคลเอ็นต์ API อย่างง่าย” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “การสร้างไคลเอ็นต์ API อย่างง่าย”

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

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

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

บทเรียน “การสร้างไคลเอ็นต์ API อย่างง่าย” ใช้เวลานานแค่ไหน

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

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

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

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

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