×

Hướng dẫn viết class để xử lý API trả về JSON trong PHP

Việc làm việc với API trong PHP là một phần không thể thiếu trong quá trình phát triển ứng dụng web hiện đại. Khi bạn tương tác với một API, nó thường sẽ trả về dữ liệu trong định dạng JSON. Trong bài viết này, chúng ta sẽ cùng nhau khám phá cách tạo một class đơn giản để xử lý các API trả về JSON trong PHP. Chúng ta sẽ đi qua các bước từ việc gửi yêu cầu đến API đến việc xử lý và sử dụng dữ liệu nhận được.

Mở đầu, hãy xem qua khái niệm cơ bản về API và JSON, cũng như tầm quan trọng của việc xử lý dữ liệu JSON trong ứng dụng của bạn.

Hiểu về API và JSON

API (Application Programming Interface) là một giao diện cho phép các phần mềm khác nhau tương tác với nhau. Trong bối cảnh web, API thường được dùng để cho phép các ứng dụng giao tiếp với một dịch vụ trực tuyến. JSON (JavaScript Object Notation) là một định dạng để trao đổi dữ liệu, rất phổ biến trong việc truyền tải dữ liệu qua API do tính ngắn gọn, dễ đọc và dễ xử lý.

Tạo class để xử lý API

Để bắt đầu, chúng ta sẽ tạo một class PHP có tên ApiHandler. Class này sẽ bao gồm các phương thức để gửi yêu cầu, xử lý phản hồi JSON và trả về dữ liệu.

class ApiHandler {
    private $url;

    public function __construct($url) {
        $this->url = $url;
    }

    public function get($endpoint) {
        return $this->request('GET', $endpoint);
    }

    public function post($endpoint, $data) {
        return $this->request('POST', $endpoint, $data);
    }

    private function request($method, $endpoint, $data = null) {
        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, $this->url . $endpoint);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);

        if ($method == 'POST' && $data) {
            curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
            curl_setopt($ch, CURLOPT_HTTPHEADER, [
                'Content-Type: application/json',
                'Content-Length: ' . strlen(json_encode($data))
            ]);
        }

        $response = curl_exec($ch);
        if(curl_errno($ch)) {
            throw new Exception('Curl error: ' . curl_error($ch));
        }

        curl_close($ch);
        return $this->handleResponse($response);
    }

    private function handleResponse($response) {
        $data = json_decode($response, true);
        if (json_last_error() !== JSON_ERROR_NONE) {
            throw new Exception('Error parsing JSON: ' . json_last_error_msg());
        }
        return $data;
    }
}

Sử dụng class ApiHandler

Sau khi đã tạo class, bây giờ chúng ta sẽ sử dụng nó để tương tác với một API đơn giản. Ví dụ, giả sử chúng ta có một API cung cấp thông tin về người dùng:

$api = new ApiHandler('https://api.example.com/');

try {
    // Gửi yêu cầu GET
    $users = $api->get('/users');
    print_r($users);

    // Gửi yêu cầu POST
    $newUser = [
        'name' => 'John Doe',
        'email' => 'john@example.com'
    ];
    $createdUser = $api->post('/users', $newUser);
    print_r($createdUser);
} catch (Exception $e) {
    echo 'Error: ' . $e->getMessage();
}

Lời kết

Việc tạo class để xử lý API trả về JSON trong PHP không chỉ giúp bạn tổ chức mã nguồn mà còn dễ dàng mở rộng và bảo trì trong tương lai. Class ApiHandler mà chúng ta đã xây dựng ở trên rất dễ dàng sử dụng và có thể tùy chỉnh thêm để phù hợp với nhu cầu cụ thể của bạn. Hãy thực hành và điều chỉnh class này để phù hợp hơn với các API mà bạn sử dụng trong các dự án của mình.

Hy vọng bài viết này sẽ giúp bạn có cái nhìn rõ hơn về cách xử lý API và dữ liệu JSON trong PHP. Nếu bạn có dự án nào cần sử dụng API, đừng ngần ngại áp dụng những kiến thức đã học được!

Comments