PHP

PHP로 API 통신하기 (cURL)

thebasics 2024. 9. 7. 10:00

목차
1. API 통신이란 무엇인가?
   - API의 개념
   - API 통신의 중요성
2. cURL 사용법
   - cURL이란?
   - cURL 초기화 및 종료
   - cURL 옵션 설정
3. GET/POST 요청 보내기
   - GET 요청 보내기
   - POST 요청 보내기
4. 외부 API와의 통신
   - JSON 데이터를 이용한 API 통신
   - API 응답 처리
5. 코드 예제
6. 결론 및 추가 학습 자료


1. API 통신이란 무엇인가?

API의 개념

API(Application Programming Interface)는 서로 다른 소프트웨어 시스템 간의 상호작용을 가능하게 하는 인터페이스입니다. API를 통해 애플리케이션은 외부 서비스나 데이터를 쉽게 사용할 수 있습니다. 특히, 웹 API는 HTTP 프로토콜을 통해 데이터를 요청하고 응답받는 방식으로 동작합니다.

API 통신의 중요성

현대 웹 개발에서는 외부 API와의 통신이 매우 중요합니다. 이를 통해 애플리케이션은 외부 서비스의 기능을 확장하고, 데이터를 통합할 수 있습니다. 예를 들어, 소셜 미디어 API를 통해 사용자 데이터를 가져오거나, 결제 API를 통해 온라인 결제를 처리할 수 있습니다.


2. cURL 사용법

cURL이란?

cURL(Client URL)은 다양한 프로토콜을 사용하여 데이터를 전송할 수 있는 라이브러리입니다. PHP에서는 cURL을 사용하여 HTTP 요청을 쉽게 수행하고, 외부 API와 통신할 수 있습니다.

cURL 초기화 및 종료

cURL 세션을 시작하려면 'curl_init()' 함수를 사용하여 cURL 핸들을 생성해야 합니다. 세션이 끝나면 'curl_close()'를 사용하여 핸들을 종료합니다.

<?php
$curl = curl_init(); // cURL 세션 초기화

// cURL 세션 종료
curl_close($curl);
?>

cURL 옵션 설정

cURL에서 HTTP 요청을 보내기 전에 여러 가지 옵션을 설정할 수 있습니다. 'curl_setopt()' 함수를 사용하여 URL, HTTP 메서드, 헤더, 데이터 등을 설정합니다.

<?php
$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, "https://api.example.com/data");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>

이 예제에서는 cURL을 사용하여 지정된 URL로 요청을 보내고, 응답을 문자열로 반환합니다.


3. GET/POST 요청 보내기

GET 요청 보내기

GET 요청은 URL에 매개변수를 포함하여 서버로 데이터를 전송하는 방식입니다. cURL을 사용하여 GET 요청을 보낼 수 있으며, 서버로부터 데이터를 조회할 때 주로 사용됩니다.

<?php
$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, "https://api.example.com/data?name=LearnCode&age=30");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>

이 예제에서는 URL에 매개변수를 포함하여 GET 요청을 보내고, 서버의 응답을 출력합니다.

POST 요청 보내기

POST 요청은 데이터를 HTTP 요청 본문에 포함하여 서버로 전송하는 방식입니다. 주로 데이터를 서버에 제출하거나, 리소스를 생성할 때 사용됩니다.

<?php
$curl = curl_init();

$data = array(
    "name" => "LearnCode",
    "age" => 30
);

curl_setopt($curl, CURLOPT_URL, "https://api.example.com/data");
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>

이 예제에서는 'curl_setopt()'를 사용하여 POST 요청을 설정하고, 데이터를 HTTP 본문에 포함하여 서버로 전송합니다.


4. 외부 API와의 통신

JSON 데이터를 이용한 API 통신

외부 API와의 통신에서 JSON 데이터는 매우 일반적으로 사용됩니다. cURL을 사용하여 JSON 데이터를 API로 전송하고, JSON 형식으로 응답을 받을 수 있습니다.

<?php
$curl = curl_init();

$data = array(
    "name" => "LearnCode",
    "age" => 30
);

curl_setopt($curl, CURLOPT_URL, "https://api.example.com/json-data");
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>

이 예제에서는 JSON 데이터를 POST 요청 본문에 포함시켜 서버로 전송합니다. 'CURLOPT_HTTPHEADER' 옵션을 사용하여 요청 헤더에 'Content-Type: application/json'을 설정합니다.

API 응답 처리

API로부터 응답을 받은 후, 응답 데이터를 JSON 형식으로 처리하여 PHP에서 사용할 수 있습니다.

<?php
$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, "https://api.example.com/json-response");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($curl);
curl_close($curl);

$data = json_decode($response, true);

if ($data && isset($data['status']) && $data['status'] == 'success') {
    echo "API 응답 처리 성공: " . $data['data']['message'];
} else {
    echo "API 응답 처리 실패.";
}
?>

이 예제에서는 API 응답을 받아 'json_decode()' 함수를 사용하여 PHP 배열로 변환한 후, 응답 데이터를 처리합니다.


5. 코드 예제

cURL을 사용하여 GET/POST 요청을 보내고, 외부 API와 통신하는 종합적인 예제를 작성해보겠습니다.

<?php
// GET 요청 예제
function sendGetRequest($url) {
    $curl = curl_init();

    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

    $response = curl_exec($curl);
    curl_close($curl);

    return $response;
}

// POST 요청 예제
function sendPostRequest($url, $data) {
    $curl = curl_init();

    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

    $response = curl_exec($curl);
    curl_close($curl);

    return $response;
}

// JSON 데이터를 사용한 POST 요청 예제
function sendJsonPostRequest($url, $data) {
    $curl = curl_init();

    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
    curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

    $response = curl_exec($curl);
    curl_close($curl);

    return $response;
}

// GET 요청 실행
$getResponse = sendGetRequest("https://api.example.com/data?name=LearnCode&age=30");
echo "GET 요청 응답:\n" . $getResponse . "\n\n";

// POST 요청 실행
$postData = array("name" => "LearnCode", "age" => 30);
$postResponse = sendPostRequest("https://api.example.com/data", $postData);
echo "POST 요청 응답:\n" . $postResponse . "\n\n";

// JSON POST 요청 실행
$jsonData = array("name" => "LearnCode", "age" => 30);
$jsonResponse = sendJsonPostRequest("https://api.example.com/json-data", $jsonData);
echo "JSON POST 요청 응답:\n" . $jsonResponse . "\n\n";
?>

코드 분석:
- 'sendGetRequest' 함수는 GET 요청을 보내고 응답을 반환합니다.
- 'sendPostRequest' 함수는 POST 요청을 보내고 응답을 반환합니다.
- 'sendJsonPostRequest' 함수는 JSON 데이터를 사용하여 POST 요청을 보내고 응답을 반환합니다.
- 각 요청에 대한 응답을 출력하여 결과를 확인할 수 있습니다.


6. 결론 및 추가 학습 자료

이번 글에서는 PHP에서 cURL을 사용하여 API 통신을 수행하는 방법에 대해 알아보았습니다. cURL은 HTTP 요청을 보내고, 외부 API와 데이터를 주고받을 수 있는 강력한 도구입니다. GET/POST 요청을 처리하고, JSON 데이터를 사용하여 외부 서비스와 통신하는 방법을 익히면 다양한 웹 애플리케이션을 구축할 수 있습니다.

추가 학습 자료:
- [PHP 공식 문서 - cURL 함수](https://www.php.net/manual/en/book.curl.php) PHP에서 제공하는 cURL 함수에 대한 공식 문서입니다.
- [W3Schools PHP cURL 튜토리얼](https://www.w3schools.com/php/php_curl.asphttps://www.w3schools.com/mongodb/showmongodb.php?filename=demo_data_api) PHP cURL 사용 방법을 다루는 튜토리얼입니다.
- [GeeksforGeeks PHP cURL](https://www.geeksforgeeks.org/php-curl/)다양한 PHP cURL 사용 예제를 제공합니다.


이제 PHP에서 cURL을 사용한 API 통신의 기본 개념을 이해했으니, 이를 바탕으로 외부 API와 효과적으로 통신할 수 있습니다. 지속적인 학습을 통해 PHP의 모든 가능성을 탐구해보시길 바랍니다!

반응형