본문 바로가기
DEVEL/PHP

PHP 환율 정보 가져오기

by codebyai 2025. 4. 15.
반응형

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 키 관리, 캐싱, 오류 로깅 등의 추가 고려사항을 반영하여 사용하시기 바랍니다.

반응형

'DEVEL > PHP' 카테고리의 다른 글

PHP 로또 당첨번호 API  (0) 2025.04.13
PHP 라라벨 쿼리빌더 테이블 조인  (0) 2024.04.09
라라벨 oAuth 서버 구축  (0) 2024.03.10
PHP POST 전송  (0) 2024.02.22
PHP ChatGPT를 사용해서 번역 프로그램 만들기  (0) 2024.02.08