DEVEL/PHP

PHP 환율 정보 가져오기

codebyai 2025. 4. 15. 01:30
반응형

1. Composer를 통해 Guzzle 설치

터미널에서 프로젝트 폴더로 이동한 후, 아래 명령어를 실행하여 Guzzle을 설치합니다.

composer require guzzlehttp/guzzle

 

 

2. Guzzle을 사용한 PHP 코드

<?php
// Composer의 autoload 파일을 포함시킵니다.
require 'vendor/autoload.php';

use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;

// Guzzle 클라이언트 인스턴스 생성
$client = new Client();

// 환율 정보를 제공하는 API 엔드포인트 (USD 기준)
$apiUrl = 'https://api.exchangerate-api.com/v4/latest/USD';

try {
    // GET 메소드로 API 요청
    $response = $client->request('GET', $apiUrl);

    // HTTP 상태 코드 확인 (200: 성공)
    if ($response->getStatusCode() === 200) {
        // 응답 본문 읽기
        $body = $response->getBody()->getContents();
        // JSON 문자열을 PHP 배열로 디코딩
        $data = json_decode($body, true);

        if ($data === null) {
            die("JSON 데이터 디코딩에 실패했습니다.");
        }

        // 환율 정보 출력 (HTML 테이블)
        echo "<h1>USD 기준 환율 정보</h1>";
        if (isset($data['rates'])) {
            echo "<table border='1' cellspacing='0' cellpadding='5'>";
            echo "<tr><th>통화 코드</th><th>환율</th></tr>";
            foreach ($data['rates'] as $currency => $rate) {
                echo "<tr><td>{$currency}</td><td>{$rate}</td></tr>";
            }
            echo "</table>";
        } else {
            echo "환율 정보를 찾을 수 없습니다.";
        }
    } else {
        echo "요청 실패 - HTTP 상태 코드: " . $response->getStatusCode();
    }
} catch (RequestException $e) {
    // Guzzle 요청 중 예외가 발생한 경우 처리
    echo "요청 중 오류 발생: " . $e->getMessage();
}
?>

 

3. 코드 설명

  • Guzzle 클라이언트 생성
    new Client()를 이용하여 Guzzle 클라이언트를 생성합니다.
  • API 요청
    $client->request('GET', $apiUrl) 메소드를 사용하여 지정한 API 엔드포인트로 GET 요청을 보냅니다.
  • 응답 처리
    • 응답의 HTTP 상태 코드가 200(성공)인 경우, 응답 본문을 읽어 JSON 데이터를 PHP 배열로 디코딩합니다.
    • 디코딩된 데이터에서 rates 항목이 있으면, 이를 HTML 테이블 형식으로 출력합니다.
  • 예외 처리
    요청이 실패하거나 예외가 발생하면, catch 블록에서 에러 메시지를 출력합니다.

이 코드를 사용하면 Guzzle을 활용하여 환율 정보를 쉽고 안정적으로 가져올 수 있습니다. 실제 서비스에서는 API 키 관리, 캐싱, 오류 로깅 등의 추가 고려사항을 반영하여 사용하시기 바랍니다.

반응형