Tin tức và phân tích của tất cả các thiết bị di động

Cách sử dụng API newsblog.pl với ứng dụng khách PHP

Trong hướng dẫn này, chúng tôi sẽ đề cập đến các ứng dụng khách PHP khác nhau có thể được sử dụng để kết nối với API newsblog.com.

Đặc biệt, chúng ta sẽ thảo luận về việc sử dụng API newsblog.pl với hàm file_get_contents, Guzzle, HTTPful và ứng dụng khách Symfony HTTPS.

API newsblog.pl là gì?

newsblog.pl cung cấp một bộ công cụ miễn phí mà bạn có thể theo dõi hiệu suất trang web của mình. Những công cụ này bao gồm trình phân tích liên kết bị hỏng, thời gian tải và trình kiểm tra DNS. Những công cụ này có thể được truy cập trực tuyến thông qua giao diện web hoặc API.

API dựa trên HTTP và có thể được truy cập từ bất kỳ ngôn ngữ lập trình nào có thư viện máy khách HTTP. API có một bậc miễn phí hào phóng mà bạn có thể bắt đầu sử dụng mà không cần phải cung cấp thông tin thanh toán.

Chúng ta sẽ xây dựng cái gì

Chúng tôi sẽ viết một tập lệnh thực thi dòng lệnh để tính toán thời gian tải một trang Google và in nó trên thiết bị đầu cuối. Chúng tôi sẽ triển khai chương trình đơn giản này bằng nhiều ứng dụng khách HTTP HTTP khác nhau để trình bày cách sử dụng API.

Đặc biệt, chúng ta sẽ sử dụng các hàm dựng sẵn – file_get_contents() và php_curl, và phần mở rộng Guzzle PHP. Dù các ví dụ này có vẻ đơn giản nhưng chúng cho thấy các khái niệm cơ bản về cách sử dụng API newsblog.pl.

điều kiện tiên quyết

Để tiếp tục, bạn phải biết PHP trước và cài đặt nó trên máy tính của mình. Ngoài ra, bạn sẽ cần Composer để quản lý các tiện ích mở rộng.

Cuối cùng, bạn sẽ cần một trình soạn thảo văn bản để viết mã. Trong trường hợp của tôi, tôi sẽ sử dụng Visual Studio Code, một trình soạn thảo văn bản mã nguồn mở phổ biến của Microsoft. Bạn có thể tải xuống từ trang web Visual Studio Code.

Newsblog.pl đánh giá API

API wdzzwdz có các điểm cuối khác nhau tùy thuộc vào những gì bạn muốn làm. Bạn có thể tìm thấy danh sách đầy đủ các điểm cuối và tài liệu liên quan trên trang tài liệu.

Thiết lập tài khoản newsblog.pl

Để bắt đầu sử dụng API, bạn cần tạo một tài khoản bằng cách truy cập trang đích của API và nhấp vào nút đăng ký. Sau khi đăng ký hoàn tất, bạn sẽ được đưa đến bảng điều khiển nơi bạn sẽ thấy khóa API của mình. Bảng điều khiển sẽ trông giống như hình bên dưới. Khóa API của tôi đã bị xáo trộn vì lý do bảo mật.

Bạn phải cung cấp khóa này làm tiêu đề yêu cầu trong mỗi yêu cầu API. Bạn sẽ sớm thấy làm thế nào điều này có thể được thực hiện.

Sau khi tạo tài khoản newsblog.pl và cài đặt PHP, chúng ta có thể bắt đầu tạo dự án.

Tạo một thư mục dự án

Đầu tiên, tạo một thư mục nơi chúng tôi sẽ lưu trữ các tệp dự án. Sau đó tạo các tệp sau

  • .env
  • with_curl.php
  • with_file_get_contents.php
  • with_guzzle.php

Sau đó chạy lệnh sau để cài đặt tiện ích mở rộng vlucas/phpdotenv và guzzlehttp/guzzle

composer require vlucas/phpdotenv guzzlehttp/guzzle

Tại thời điểm này, thư mục dự án của bạn sẽ trông như thế này:

Bây giờ hãy mở tệp .env và thêm dòng mã sau thay thế khóa API thực tế từ bảng điều khiển newsblog.pl:

API_KEY=<your-api-key>

Sử dụng file_get_contents()

Phương pháp đầu tiên chúng ta có thể sử dụng để thực hiện các yêu cầu HTTP là gọi hàm file_get_contents() được tích hợp sẵn trong PHP. Chữ ký hàm file_get_contents() trông như thế này:

file_get_contents(path, include_path, context)

Mặc dù phương pháp này thường được sử dụng để đọc nội dung của tệp trong bộ nhớ cục bộ, nhưng chúng ta có thể sử dụng phương pháp này để đọc tài nguyên mạng, chẳng hạn như dữ liệu do điểm cuối API trả về.

Bây giờ, để bắt đầu, hãy mở with_file_get_contents.php và thêm mã PHP tiêu chuẩn.

<?php
   // all the code to be inserted here
?>

Sau đó, chúng tôi có thể bắt đầu tải tiện ích mở rộng. Thêm dòng mã sau vào tệp của bạn

require_once('vendor/autoload.php');

Sau đó, chúng tôi có thể tải các biến môi trường của mình bao gồm cả khóa API

$dotenv = DotenvDotenv::createImmutable(__DIR__);
$dotenv->load();

Sau đó, chúng ta có thể xác định tải trọng. Đây sẽ là dữ liệu mà chúng tôi sẽ gửi như một phần của yêu cầu

$payload = json_encode([
    "url" => "https://www.google.com", 
    "proxyCountry" => "us",
    "followRedirect" => true
]);

Chúng tôi đã tạo một biến tải trọng và gán nó cho một chuỗi JSON chứa các thuộc tính url, proxyCountry và followRedirect.

Thuộc tính url chỉ định trang có thời gian tải mà chúng tôi muốn kiểm tra.

ProxyCountry là vị trí của máy chủ mà chúng tôi muốn sử dụng để gửi yêu cầu. Trong trường hợp này, chúng tôi đang sử dụng máy chủ Hoa Kỳ nhưng bạn có thể chọn từ Ấn Độ, Trung Quốc, Vương quốc Anh và Pháp. Bạn có thể đọc tài liệu để biết thêm thông tin.

Sau đó, FollowRedirect sẽ xác định xem proxy có nên tuân theo bất kỳ chuyển hướng nào hay không và đo thời gian phản hồi của phản hồi cuối cùng hoặc chuyển hướng đầu tiên.

Sau đó, chúng tôi có thể tạo các tùy chọn sẽ định cấu hình yêu cầu của mình bằng cách thêm mã này:

$options = [
    "http" => [
        "method" => "POST",
        "header" => array("Content-Type: application/json", "x-api-key : " . $_ENV['API_KEY']),
        "content" => $payload
    ] 
];

Theo cách này, chúng tôi đã tạo một đối tượng tùy chọn chỉ định rằng phương thức HTTP của chúng tôi là POST và chúng tôi có một tiêu đề chỉ định hai thuộc tính loại nội dung là JSON và khóa x-api là khóa API được chỉ định trong .env và nó đã được tải dưới dạng một môi trường biến đổi.

Sau đó, chúng tôi có thể đưa ra yêu cầu bằng cách tạo một luồng nơi các tùy chọn của chúng tôi sẽ được lưu:

$context = stream_context_create($options);

Sau đó, chúng tôi gọi phương thức file_get_contents() để thực hiện yêu cầu và lưu trữ phản hồi dưới dạng một biến.

$response = file_get_contents("https://api.newsblog.pl.com/loadtime", false, $context);

Chúng tôi đã gửi yêu cầu tới https://api.newsblog.pl.com/loadtime. Sai bảo PHP không sử dụng đường dẫn. Và chúng tôi chuyển ngữ cảnh mà chúng tôi đã tạo cho phương thức.

Để hiển thị phản hồi, chúng tôi sẽ sử dụng đầu ra như sau.

echo "Loadtime: " . json_decode($response)->data->total . "n";

Cuối cùng, tập tin của bạn sẽ trông như thế này:

<?php
    require_once('vendor/autoload.php');

    $dotenv = DotenvDotenv::createImmutable(__DIR__);
    $dotenv->load();

    $payload = json_encode([
        "url" => "https://www.google.com", 
        "proxyCountry" => "us",
        "followRedirect" => true
    ]);

    $options = [
        "http" => [
            "method" => "POST",
            "header" => array("Content-Type: application/json", "x-api-key : " . $_ENV['API_KEY']),
            "content" => $payload
        ] 
    ];

    $context = stream_context_create($options);

    $response = file_get_contents("https://api.newsblog.pl.com/loadtime", false, $context);

    echo "Loadtime: " . json_decode($response)->data->total . "n";
?>

Sau khi chạy tệp bằng lệnh sau:

php with_file_get_contents.php

Bạn sẽ nhận được đầu ra sau

Loadtime: 81

Sử dụng cURL

cURL là một công cụ dòng lệnh được sử dụng để gửi các yêu cầu URL ở phía máy khách. Trong PHP nó có thể được sử dụng với công cụ php-curl. Để bắt đầu sử dụng, hãy mở tệp with_curl.php và viết một mẫu PHP

<?php
    // all new code will be written here
?>

Tiếp theo, hãy nhập các tiện ích mở rộng và tải biến môi trường API_KEY được xác định trong tệp .env

require_once('vendor/autoload.php');

$dotenv = DotenvDotenv::createImmutable(__DIR__);
$dotenv->load();

Tiếp theo, chúng ta sẽ tạo một biến để chứa các tiêu đề của đối tượng dưới dạng một mảng, trong đó mỗi phần tử riêng lẻ của mảng là một tiêu đề cụ thể.

$header = ["Content-type: application/json", "x-api-key: " . $_ENV['API_KEY']];

Chúng tôi đã xác định hai tiêu đề, một cho loại nội dung và một cho khóa API.

Sau đó, chúng ta có thể xác định nội dung của yêu cầu.

$body = json_encode([
    "url" => "google.com",
    "proxyCountry" => "us",
    "followRedirect" => true
]);

Sau đó, chúng ta có thể tạo phiên cuộn tròn bằng cách sử dụng hàm curl_init(). Chúng ta có thể chuyển URL mà chúng ta muốn đưa ra yêu cầu làm đối số để gọi hàm.

$ch = curl_init("https://api.newsblog.pl.com/loadtime");

Bây giờ chúng ta có thể kết hợp tất cả lại với nhau bằng cách xác định tiêu đề và nội dung dưới dạng tùy chọn phiên. Đối với điều này, chúng tôi sẽ sử dụng chức năng curl_setopt_array()

curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_HTTPHEADER => $header,
    CURLOPT_POSTFIELDS => $body
]);

Để thực hiện yêu cầu, chúng tôi sẽ gọi curl_exec()

$response = curl_exec($ch);

Chúng tôi đã lưu trữ phản hồi trong biến $response, vì vậy chúng tôi có thể đóng phiên để giải phóng tài nguyên hệ thống mà phiên sử dụng.

curl_close($ch);

Cuối cùng, chúng ta có thể in phản hồi ra màn hình bằng cách sử dụng var_dump.

var_dump($response);

Cuối cùng, tệp script của bạn sẽ trông như thế này

<?php
    require_once('vendor/autoload.php');

    $dotenv = DotenvDotenv::createImmutable(__DIR__);
    $dotenv->load();

    $header = ["Content-type: application/json", "x-api-key: " . $_ENV['API_KEY']];

    $body = json_encode([
        "url" => "google.com",
        "proxyCountry" => "us",
        "followRedirect" => true
    ]);

    $ch = curl_init("https://api.newsblog.pl.com/loadtime");

    curl_setopt_array($ch, [
        CURLOPT_CUSTOMREQUEST => "POST",
        CURLOPT_HTTPHEADER => $header,
        CURLOPT_POSTFIELDS => $body
    ]);

    $response = curl_exec($ch);

    curl_close($ch);

    var_dump($response);
?>

Khi chúng tôi chạy tập lệnh với php with_curl.php, bạn sẽ nhận được kết quả sau:

{"timestamp":1666083632547,"apiStatus":"success","apiCode":200,"meta":{"url":"google.com","followRedirect":true,"redirectedURL":"https://www.google.com/?gws_rd=ssl","test":{"id":"d20h1hb409qbfwm0g534l51asugpi5hl"}},"data":{"dns":12,"connect":17,"tls":6,"send":21,"wait":110,"total":114}}bool(true)

Yêu cầu đã hoàn tất thành công và API đã phản hồi bằng JSON0. Bạn có thể sử dụng dữ liệu này theo cách bạn muốn.

với guzzle

Trong phần cuối của hướng dẫn này, chúng ta sẽ sử dụng Guzzle để viết một kịch bản. Như mọi khi, chúng tôi bắt đầu bằng cách chèn mẫu PHP vào tệp with_guzzle.php

<?php
    // all the code will go here
?>

Sau đó, chúng tôi có thể nhập các tiện ích mở rộng và ứng dụng khách Guzzle cũng như các đối tượng yêu cầu và tải các biến môi trường.

require_once('vendor/autoload.php');

use GuzzleHttpClient;
use GuzzleHttpPsr7Request;

Sau đó, chúng ta có thể tải các biến môi trường.

$dotenv = DotenvDotenv::createImmutable(__DIR__);
$dotenv->load();

Tiếp theo, chúng ta có thể tạo một phiên bản của ứng dụng khách Guzzle HTTP

$client = new GuzzleHttpClient();

Sau đó, chúng tôi có thể tiến hành tạo tiêu đề cho yêu cầu của mình

$headers = [
    'x-api-key' => $_ENV['API_KEY'],
    'Content-Type' => 'application/json'
];

Sau đó, chúng ta có thể xác định nội dung của yêu cầu

$body = json_encode([
    "url" => "google.com",
    "proxyCountry" => "us",
    "followRedirect" => true
]);

Sau đó, chúng tôi có thể thực hiện yêu cầu bằng cách tạo một phiên bản của lớp Yêu cầu và chuyển vào URL, tiêu đề và nội dung của điểm cuối API.

$request = new Request('POST', 'https://api.newsblog.pl.com/loadtime', $headers, $body);

Sau đó, chúng tôi có thể gửi yêu cầu bằng cách thêm dòng mã sau:

$response = $client->sendAsync($request)->wait();

Sau khi gửi yêu cầu, chúng tôi có thể nhận được nội dung của nó như sau

$response_body = $response->getBody();

Cuối cùng, chúng ta có thể giải mã phản hồi JSON và in thời gian tải

echo "Loadtime: " . json_decode($response_body)->data->total . "n";

Vì vậy, cuối cùng, tệp sẽ trông như thế này:

<?php
    require_once('vendor/autoload.php');

    use GuzzleHttpClient;
    use GuzzleHttpPsr7Request;

    $dotenv = DotenvDotenv::createImmutable(__DIR__);
    $dotenv->load();
    

    $client = new GuzzleHttpClient();

    $headers = [
        'x-api-key' => $_ENV['API_KEY'],
        'Content-Type' => 'application/json'
    ];

    $body = json_encode([
        "url" => "google.com",
        "proxyCountry" => "us",
        "followRedirect" => true
    ]);

    $request = new Request('POST', 'https://api.newsblog.pl.com/loadtime', $headers, $body);

    $response = $client->sendAsync($request)->wait();

    $response_body = $response->getBody();

    echo "Loadtime: " . json_decode($response_body)->data->total . "n";
?>

Và khi bạn thực thi tập lệnh bằng lệnh sau:

$php with_guzzle.php

Và bạn sẽ thấy câu trả lời:

Loadtime: 130

Đăng kí

Trong bài viết này, chúng tôi đã đề cập đến các ứng dụng khách khác nhau mà bạn có thể muốn sử dụng khi xây dựng dự án PHP sẽ yêu cầu API newsblog.com.

Mặc dù các tập lệnh trong dự án này sử dụng dòng lệnh làm dạng đầu ra chính, nhưng các dự án trong thế giới thực có thể trình bày phản hồi trên một trang web hoặc lưu nó vào một tệp. Các tập lệnh ví dụ trong bài viết này rất đơn giản, nhưng chúng thể hiện các khái niệm cơ bản về cách sử dụng API newsblog.pl. Để sử dụng các API khác nhau, bạn có thể thay đổi điểm cuối và chuyển các tùy chọn khác nhau trong phần thân yêu cầu.

Bạn cũng có thể quan tâm đến cách sử dụng API tra cứu DNS newsblog.pl trong JavaScript.