PHP 클라이언트에서 koreantech.org API를 사용하는 방법

이 가이드에서는 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 파일을 열고 다음 코드 줄을 추가하여 를 koreantech.org 대시보드의 실제 API 키로 바꿉니다.

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를 사용하는 방법에 관심이 있을 수도 있습니다.