이 가이드에서는 koreantech.org API에 연결하는 데 사용할 수 있는 다양한 PHP 클라이언트를 살펴보겠습니다.
특히 file_get_contents 함수, Guzzle, HTTPful 및 Symfony의 HTTPS 클라이언트와 함께 koreantech.org API를 사용하는 방법을 다룹니다.
목차
koreantech.org API란 무엇입니까?
koreantech.org는 웹사이트의 성능을 모니터링하는 데 사용할 수 있는 무료 도구 세트를 제공합니다. 이러한 도구에는 끊어진 링크 분석기, 로드 시간 및 DNS 검사기가 포함됩니다. 이러한 도구는 웹 인터페이스 또는 API를 통해 온라인으로 액세스할 수 있습니다.
API는 HTTP를 기반으로 하며 HTTP 클라이언트 라이브러리가 있는 모든 프로그래밍 언어에서 액세스할 수 있습니다. API에는 지불 정보를 제공할 필요 없이 사용할 수 있는 넉넉한 프리 티어가 있습니다.
우리가 무엇을 만들 것인가
명령줄에서 실행할 수 있는 스크립트를 작성하여 Google 웹사이트를 로드하고 터미널에 인쇄하는 데 걸리는 시간을 계산합니다. 다른 PHP HTTP 클라이언트를 사용하여 이 간단한 프로그램을 구현하여 API를 사용하는 모습을 보여줍니다.
특히 내장 함수인 file_get_contents() 및 php_curl과 확장 Guzzle PHP를 사용할 것입니다. 이러한 예는 간단해 보일 수 있지만 koreantech.org API 사용의 핵심 개념을 보여줍니다.
전제 조건
따라 하려면 미리 PHP를 알고 컴퓨터에 설치해야 합니다. 또한 확장을 관리하려면 Composer가 필요합니다.
마지막으로 코드를 작성하려면 텍스트 편집기도 필요합니다. 제 경우에는 Microsoft의 인기 있는 오픈 소스 텍스트 편집기인 Visual Studio Code를 사용할 것입니다. Visual Studio Code 웹사이트에서 다운로드할 수 있습니다.
koreantech.org API 개요
koreantech.org API에는 수행하려는 작업에 따라 다른 끝점이 있습니다. 엔드포인트 및 관련 문서의 전체 목록은 문서 페이지에서 찾을 수 있습니다.
koreantech.org 계정 만들기
API 사용을 시작하려면 API 랜딩 페이지로 이동하여 가입 버튼을 클릭하여 계정을 생성해야 합니다. 가입이 완료되면 대시보드로 이동하여 API 키를 볼 수 있습니다. 대시보드는 아래 그림과 같아야 합니다. 보안상의 이유로 API 키를 블랙아웃했습니다.
모든 API 요청에서 이 키를 요청 헤더로 제공해야 합니다. 곧 이것이 어떻게 가능한지 알게 될 것입니다.
koreantech.org 계정이 생성되고 PHP가 설치되면 프로젝트 생성을 시작할 수 있습니다.
프로젝트 폴더 생성
먼저 프로젝트 파일을 저장할 폴더를 만듭니다. 그 후 다음 파일을 생성합니다.
- .env
- with_curl.php
- with_file_get_contents.php
- with_guzzle.php
그런 다음 다음 명령을 실행하여 vlucas/phpdotenv 및 guzzlehttp/guzzle 확장을 설치합니다.
composer require vlucas/phpdotenv guzzlehttp/guzzle
이 시점에서 프로젝트 폴더는 다음과 같아야 합니다.
이제 .env 파일을 열고 다음 코드 줄을 추가하여
API_KEY=<your-api-key>
file_get_contents() 사용
HTTP 요청을 만드는 데 사용할 수 있는 첫 번째 방법은 PHP에 내장된 file_get_contents() 함수를 호출하는 것입니다. 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 = DotenvDotenv::createImmutable(__DIR__); $dotenv->load();
그런 다음 페이로드를 정의할 수 있습니다. 이것은 요청 본문의 일부로 보낼 데이터입니다.
$payload = json_encode([ "url" => "https://www.google.com", "proxyCountry" => "us", "followRedirect" => true ]);
페이로드 변수를 생성하고 url, proxyCountry 및 followRedirect를 속성으로 포함하는 JSON 문자열에 할당했습니다.
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.koreantech.org.com/loadtime", false, $context);
https://api.koreantech.org.com/loadtime에 요청했습니다. false는 PHP가 경로를 사용하지 않도록 지시합니다. 그리고 생성한 컨텍스트를 메서드에 전달합니다.
응답을 표시하기 위해 다음과 같이 출력을 사용합니다.
echo "Loadtime: " . json_decode($response)->data->total . "n";
이 작업이 끝나면 파일은 다음과 같아야 합니다.
<?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.koreantech.org.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 ?>
그런 다음 확장을 가져오고 .env 파일에 정의된 API_KEY 환경 변수를 로드합니다.
require_once('vendor/autoload.php'); $dotenv = DotenvDotenv::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_init() 함수를 사용하여 curl 세션을 만들 수 있습니다. 요청을 하려는 URL을 함수 호출에 대한 인수로 전달할 수 있습니다.
$ch = curl_init("https://api.koreantech.org.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 = 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.koreantech.org.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을 사용하여 스크립트를 작성합니다. 항상 그렇듯이 with_guzzle.php 내부에 PHP 상용구를 삽입하는 것으로 시작합니다.
<?php // all the code will go here ?>
그런 다음 확장과 Guzzle 클라이언트 및 요청 개체를 가져오고 환경 변수를 로드할 수 있습니다.
require_once('vendor/autoload.php'); use GuzzleHttpClient; use GuzzleHttpPsr7Request;
다음으로 환경 변수를 로드할 수 있습니다.
$dotenv = DotenvDotenv::createImmutable(__DIR__); $dotenv->load();
그 후에 Guzzle HTTP 클라이언트를 인스턴스화할 수 있습니다.
$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 클래스를 인스턴스화하고 API 끝점 URL, 헤더 및 본문을 전달하여 요청할 수 있습니다.
$request = new Request('POST', 'https://api.koreantech.org.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 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.koreantech.org.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
결론
이 기사에서는 koreantech.org API가 필요한 PHP 프로젝트를 생성할 때 사용할 수 있는 다양한 클라이언트를 살펴보았습니다.
이 프로젝트의 스크립트는 명령줄을 기본 출력 형식으로 사용하지만 실제 프로젝트는 웹 페이지에 응답을 표시하거나 파일에 쓸 수 있습니다. 이 기사의 예제 스크립트는 간단하지만 koreantech.org API 사용의 핵심 개념을 보여줍니다. 다른 API를 사용하려면 엔드포인트를 변경하고 요청 본문에 다른 옵션을 전달할 수 있습니다.
Javascript에서 koreantech.org DNS 조회 API를 사용하는 방법에 관심이 있을 수도 있습니다.