[php] PHP에서 API 호출을 위한 요청과 응답 로깅

API 호출을 수행할 때는 요청과 응답을 로깅하여 문제를 식별하고 디버깅할 수 있는 것이 중요합니다. 이를 위해 PHP에서는 cURL을 사용하여 API 호출을 수행하고, 이 과정에서 요청과 응답을 로깅하는 방법을 알아보겠습니다.

cURL을 사용한 API 호출

cURL은 PHP에서 서버 간 통신을 위해 사용되는 라이브러리로, 다양한 프로토콜을 지원합니다. API 호출을 위해서는 cURL을 사용하여 요청을 만들고 응답을 받아야 합니다.

아래는 cURL을 사용하여 간단한 GET 요청을 보내고 응답을 받는 예제 코드입니다.

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.example.com/data');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

echo $response;
?>

위 예제에서는 curl_init() 함수로 cURL 핸들을 초기화하고, curl_setopt() 함수로 요청을 설정한 뒤 curl_exec() 함수로 요청을 수행하여 응답을 받습니다. 이후 curl_close() 함수로 cURL 핸들을 닫습니다.

요청과 응답 로깅

API 호출을 로깅하기 위해서는 요청과 응답을 파일에 기록하는 것이 일반적입니다. 아래는 cURL을 이용한 API 호출에서 요청과 응답을 로깅하는 예제 코드입니다.

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.example.com/data');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);

$request_info = curl_getinfo($ch);

$logData = [
    'url' => 'https://api.example.com/data',
    'request_headers' => $request_info['request_header'],
    'response_headers' => $request_info['response_header'],
    'response' => $response
];

$logFile = 'api_log_' . date('Y-m-d') . '.log';
file_put_contents($logFile, json_encode($logData) . PHP_EOL, FILE_APPEND);

curl_close($ch);

echo $response;
?>

위 코드에서는 curl_getinfo() 함수를 사용하여 cURL 핸들로부터 요청과 응답에 대한 정보를 얻고, 이를 로그 데이터에 저장한 뒤 파일에 기록합니다.

결론

PHP에서 cURL을 사용하여 API 호출을 수행하고, 이 과정에서 요청과 응답을 로깅하는 방법을 살펴보았습니다. API 호출을 로깅함으로써 문제 발생 시 빠르게 대처할 수 있으며, 시스템을 효과적으로 모니터링할 수 있습니다.