วิธีใช้ Geekflare API กับไคลเอนต์ PHP

เผยแพร่แล้ว: 2022-10-25

ในคู่มือนี้ เราจะพูดถึงไคลเอนต์ PHP ต่างๆ ที่คุณสามารถใช้เพื่อเชื่อมต่อกับ Geekflare API

โดยเฉพาะอย่างยิ่ง เราจะกล่าวถึงการใช้ Geekflare API ด้วยฟังก์ชัน file_get_contents , Guzzle, HTTPful และไคลเอ็นต์ HTTPS ของ Symfony

Geekflare API คืออะไร

Geekflare มีชุดเครื่องมือฟรีที่คุณสามารถใช้ตรวจสอบประสิทธิภาพของเว็บไซต์ของคุณได้ เครื่องมือเหล่านี้รวมถึงตัววิเคราะห์ลิงก์ที่ใช้งานไม่ได้ เวลาในการโหลด และตัวตรวจสอบ DNS เครื่องมือเหล่านี้สามารถเข้าถึงได้ทางออนไลน์ผ่านทางเว็บอินเตอร์เฟสหรือ API

API นั้นใช้ HTTP และสามารถเข้าถึงได้จากภาษาการเขียนโปรแกรมใดๆ ด้วยไลบรารีไคลเอนต์ HTTP API มีระดับฟรีมากมายที่คุณสามารถเริ่มใช้งานได้โดยไม่ต้องให้ข้อมูลการชำระเงิน

สิ่งที่เรากำลังจะสร้าง

เราจะเขียนสคริปต์ที่เรียกใช้งานได้จากบรรทัดคำสั่ง ซึ่งจะคำนวณระยะเวลาที่ใช้ในการโหลดเว็บไซต์ Google และพิมพ์ไปยังเทอร์มินัล เราจะใช้โปรแกรมอย่างง่ายนี้โดยใช้ไคลเอนต์ PHP HTTP ที่แตกต่างกันเพื่อแสดงให้เห็นว่าการใช้ API เป็นอย่างไร

เราจะใช้ฟังก์ชันในตัว – file_get_contents() และ php_curl และส่วนขยาย Guzzle PHP อย่างไรก็ตาม ตัวอย่างเหล่านี้อาจปรากฏขึ้นอย่างง่าย พวกเขาแสดงให้เห็นถึงแนวคิดหลักของการใช้ Geekflare API

ข้อกำหนดเบื้องต้น

ในการปฏิบัติตาม คุณจะต้องรู้ PHP ล่วงหน้าและติดตั้งไว้ในคอมพิวเตอร์ของคุณ นอกจากนี้ คุณจะต้องใช้ Composer เพื่อจัดการส่วนขยาย

สุดท้ายนี้ คุณจะต้องใช้โปรแกรมแก้ไขข้อความเพื่อเขียนโค้ด ในกรณีของฉัน ฉันจะใช้ Visual Studio Code ซึ่งเป็นโปรแกรมแก้ไขข้อความโอเพนซอร์สยอดนิยมจาก Microsoft คุณสามารถดาวน์โหลดได้จากเว็บไซต์ Visual Studio Code

ภาพรวม Geekflare API

Geekflare API มีจุดสิ้นสุดที่แตกต่างกันขึ้นอยู่กับสิ่งที่คุณต้องการทำ รายการปลายทางทั้งหมดและเอกสารที่เกี่ยวข้องสามารถดูได้ในหน้าเอกสารประกอบ

การสร้างบัญชี Geekflare

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

Geekflare-แดชบอร์ด-1

ในทุกคำขอ API ที่คุณทำ คุณจะต้องระบุคีย์นี้เป็นส่วนหัวของคำขอ ในไม่ช้า คุณจะเห็นว่าสิ่งนี้สามารถทำได้อย่างไร

ด้วยบัญชี Geekflare ที่สร้างและติดตั้ง PHP เราสามารถเริ่มสร้างโครงการได้

การสร้างโฟลเดอร์โครงการ

ขั้นแรก สร้างโฟลเดอร์ที่เราจะเก็บไฟล์โครงการ หลังจากนั้นให้สร้างไฟล์ต่อไปนี้

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

หลังจากนั้นให้รันคำสั่งต่อไปนี้เพื่อติดตั้ง vlucas/phpdotenv และ guzzlehttp/guzzle extension

 composer require vlucas/phpdotenv guzzlehttp/guzzle

ณ จุดนี้ โฟลเดอร์โครงการของคุณควรมีลักษณะดังนี้:

ภาพหน้าจอจาก-2022-10-17-10-55-35

ตอนนี้เปิดไฟล์ .env และเพิ่มบรรทัดโค้ดต่อไปนี้ โดยแทนที่ <your-api-key> ด้วยคีย์ API จริงของคุณจากแดชบอร์ด Geekflare:

 API_KEY=<your-api-key>

การใช้ file_get_contents()

วิธีแรกที่เราสามารถใช้เพื่อสร้างคำขอ HTTP ได้คือการเรียกใช้ฟังก์ชัน file_get_contents() ซึ่งสร้างไว้ใน PHP ฟังก์ชันลายเซ็นของฟังก์ชัน file_get_contents() มีดังนี้:

 file_get_contents(path, include_path, context)

แม้ว่าเมธอดนี้มักใช้เพื่ออ่านเนื้อหาของไฟล์ในที่จัดเก็บในตัวเครื่อง แต่เราสามารถใช้วิธีนี้เพื่ออ่านทรัพยากรบนเว็บได้ เช่น ข้อมูลที่ส่งคืนโดยปลายทาง API

ในการเริ่มต้นใช้งาน เปิด with_file_get_contents.php และเพิ่มโค้ด PHP สำเร็จรูป

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

ต่อไป เราสามารถเริ่มต้นด้วยการโหลดส่วนขยาย เพิ่มโค้ดบรรทัดต่อไปนี้ในไฟล์ของคุณ

 require_once('vendor/autoload.php');

ต่อไป เราสามารถโหลดตัวแปรสภาพแวดล้อมของเรา ซึ่งรวมถึงคีย์ API

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

จากนั้น เราสามารถกำหนด payload ได้ นี่จะเป็นข้อมูลที่เราจะส่งโดยเป็นส่วนหนึ่งของเนื้อหาคำขอ

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

เราได้สร้างตัวแปรเพย์โหลดและกำหนดให้กับสตริง JSON ที่มี url , proxyCountry และ followRedirect เป็นคุณสมบัติ

คุณสมบัติ url ระบุหน้าเว็บที่เราต้องการตรวจสอบเวลาในการโหลด

proxyCountry คือที่ตั้งของเซิร์ฟเวอร์ที่เราต้องการใช้เพื่อส่งคำขอ ในกรณีนี้ เรากำลังใช้เซิร์ฟเวอร์ของสหรัฐอเมริกา แต่คุณสามารถเลือกได้จากอินเดีย จีน สหราชอาณาจักร และฝรั่งเศส คุณสามารถอ่านเอกสารสำหรับรายละเอียดเพิ่มเติม

จากนั้น followRedirect จะระบุว่าพร็อกซีเซิร์ฟเวอร์ควรติดตามการเปลี่ยนเส้นทางใดๆ และวัดเวลาตอบสนองของการตอบสนองสุดท้ายหรือการเปลี่ยนเส้นทางครั้งแรก

หลังจากนั้น เราสามารถสร้างตัวเลือกที่จะกำหนดค่าคำขอของเราโดยเพิ่มรหัสนี้:

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

โดยการทำเช่นนี้ เราได้สร้างอ็อบเจ็กต์ตัวเลือกที่ระบุว่าเมธอด HTTP ของเราคือ POST และเรามีส่วนหัวที่ระบุคุณสมบัติสองประการ ได้แก่ ประเภทเนื้อหาเป็น JSON และ x-api-key เป็นคีย์ API ที่คุณระบุไว้ใน .env และโหลดเป็นตัวแปรสภาพแวดล้อมแล้ว

ต่อไป เราสามารถขอได้โดยการสร้างสตรีมซึ่งตัวเลือกของเราจะถูกเขียนไปที่:

 $context = stream_context_create($options);

ต่อไป เราเรียกเมธอด file_get_contents() เพื่อส่งคำขอและเก็บการตอบสนองเป็นตัวแปร

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

เราได้ส่งคำขอไปที่ https://api.geekflare.com/loadtime เท็จบอก PHP ไม่ให้ใช้เส้นทาง และเราส่งต่อบริบทที่เราสร้างขึ้นไปยังวิธีการ

เพื่อแสดงการตอบสนอง เราจะใช้ผลลัพธ์ดังนี้

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

ในตอนท้าย ไฟล์ของคุณควรมีลักษณะดังนี้:

 <?php require_once('vendor/autoload.php'); $dotenv = Dotenv\Dotenv::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.geekflare.com/loadtime", false, $context); echo "Loadtime: " . json_decode($response)->data->total . "\n"; ?>

เมื่อคุณเรียกใช้ไฟล์โดยใช้คำสั่งต่อไปนี้:

 php with_file_get_contents.php

คุณจะได้ผลลัพธ์ดังต่อไปนี้

 Loadtime: 81

ใช้cURL

cURL เป็นยูทิลิตีบรรทัดคำสั่งที่ใช้เพื่อสร้างคำขอ URL ฝั่งไคลเอ็นต์ ใน PHP สามารถใช้ยูทิลิตี้ php-curl ได้ ในการเริ่มต้นใช้งาน ให้เปิดไฟล์ with_curl.php และเขียนคำสั่งสำเร็จรูป PHP

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

จากนั้นให้เรานำเข้าส่วนขยายและโหลดตัวแปรสภาพแวดล้อม API_KEY ที่กำหนดไว้ในไฟล์ .env

 require_once('vendor/autoload.php'); $dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load();

ต่อไป เราจะสร้างตัวแปรเพื่อเก็บส่วนหัวของวัตถุของเราเป็นอาร์เรย์ โดยที่แต่ละองค์ประกอบในอาร์เรย์เป็นส่วนหัวเฉพาะ

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

เรากำหนดส่วนหัวสองรายการ หนึ่งรายการสำหรับประเภทเนื้อหาและอีกรายการสำหรับคีย์ API

จากนั้นเราสามารถกำหนดเนื้อความของคำขอได้

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

หลังจากนี้ เราสามารถสร้าง curl session โดยใช้ฟังก์ชัน curl_init() เราสามารถส่ง URL ที่เราต้องการส่งคำขอเป็นอาร์กิวเมนต์ในการเรียกใช้ฟังก์ชัน

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

ตอนนี้ เราสามารถรวมทุกอย่างเข้าด้วยกันโดยกำหนดส่วนหัวและเนื้อหาเป็นตัวเลือกสำหรับเซสชัน สำหรับสิ่งนี้ เราจะใช้ฟังก์ชัน curl_setopt_array()

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

ในการส่งคำขอ เราจะเรียก curl_exec()

 $response = curl_exec($ch);

เราได้เก็บการตอบสนองไว้ในตัวแปร $response ดังนั้นเราจึงสามารถปิดเซสชันเพื่อเพิ่มทรัพยากรระบบที่ใช้โดยเซสชันได้

 curl_close($ch);

สุดท้าย เราสามารถพิมพ์การตอบกลับไปยังหน้าจอโดยใช้ var_dump

 var_dump($response);

ในที่สุด ไฟล์สคริปต์ของคุณควรมีลักษณะดังนี้

 <?php require_once('vendor/autoload.php'); $dotenv = Dotenv\Dotenv::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.geekflare.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); ?>

เมื่อเรารันสคริปต์โดยใช้ php with_curl.php คุณควรได้ผลลัพธ์ต่อไปนี้:

 {"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)

คำขอเสร็จสมบูรณ์แล้ว และ API ตอบกลับด้วยข้อมูล JSON0 คุณสามารถใช้ข้อมูลนี้ได้ตามที่คุณต้องการ

กับ Guzzle

ในส่วนสุดท้ายของบทช่วยสอนนี้ เราจะใช้ Guzzle ในการเขียนสคริปต์ เช่นเคย เราเริ่มต้นด้วยการแทรกสำเร็จรูป PHP ลงใน with_guzzle.php

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

จากนั้น เราสามารถนำเข้าส่วนขยายและ Guzzle Client และ Request Objects และโหลดตัวแปรสภาพแวดล้อม

 require_once('vendor/autoload.php'); use GuzzleHttp\Client; use GuzzleHttp\Psr7\Request;

ต่อไป เราสามารถโหลดตัวแปรสภาพแวดล้อมได้

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

หลังจากนั้น เราสามารถยกตัวอย่าง Guzzle HTTP client

 $client = new GuzzleHttp\Client();

จากนั้นเราสามารถดำเนินการสร้างส่วนหัวสำหรับคำขอของเราได้

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

ต่อไป เราสามารถกำหนดเนื้อความของคำขอได้

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

จากนั้นเราสามารถทำการร้องขอโดยสร้างอินสแตนซ์ของคลาส Request และส่งไปยัง URL ปลายทางของ API ส่วนหัวและเนื้อหา

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

จากนั้นเราสามารถส่งคำขอโดยเพิ่มโค้ดบรรทัดนี้:

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

เมื่อส่งคำร้องแล้วเราสามารถรับเนื้อความคำร้องได้ดังนี้

 $response_body = $response->getBody();

ในที่สุด เราสามารถถอดรหัสการตอบสนอง JSON และพิมพ์เวลาโหลด

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

ในที่สุด ไฟล์ควรมีลักษณะดังนี้:

 <?php require_once('vendor/autoload.php'); use GuzzleHttp\Client; use GuzzleHttp\Psr7\Request; $dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load(); $client = new GuzzleHttp\Client(); $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.geekflare.com/loadtime', $headers, $body); $response = $client->sendAsync($request)->wait(); $response_body = $response->getBody(); echo "Loadtime: " . json_decode($response_body)->data->total . "\n"; ?>

และเมื่อคุณรันสคริปต์โดยใช้คำสั่งต่อไปนี้:

 $php with_guzzle.php

และคุณจะเห็นคำตอบ:

 Loadtime: 130

บทสรุป

ในบทความนี้ เราได้พูดถึงไคลเอนต์ต่างๆ ที่คุณอาจต้องการใช้เมื่อสร้างโปรเจ็กต์ PHP ที่ต้องใช้ Geekflare API

แม้ว่าสคริปต์ในโปรเจ็กต์นี้จะใช้บรรทัดคำสั่งเป็นรูปแบบหลักของเอาต์พุต แต่โปรเจ็กต์ในโลกแห่งความเป็นจริงสามารถนำเสนอการตอบกลับบนเว็บเพจหรือเขียนลงในไฟล์ สคริปต์ตัวอย่างในบทความนี้เรียบง่าย แต่แสดงให้เห็นถึงแนวคิดหลักของการใช้ Geekflare API หากต้องการใช้ API ต่างๆ คุณสามารถเปลี่ยนปลายทางและส่งผ่านตัวเลือกต่างๆ ในเนื้อหาคำขอได้

คุณอาจสนใจวิธีใช้ Geekflare DNS Lookup API ใน Javascript