PHP로 오픈API 이용 하기
PHP 는 유연하고 풍부한 기능을 갖춘 언어입니다. 그 특성에 걸맞게 PHP로 Daum 오픈 API를 이용하는 방법은 수십가지가 넘습니다. 여기서는 REST, XML-RPC 각 한가지 방법을 선정해 소개해드리겠습니다. 이외에도 여러가지 방법이 있으니 각자 재미있는 방법들을 연구해보시기 바랍니다.
REST #
REST 방식, 그 중
file_get_contents 함수를 이용해 간단하게 GET 호출을 수행하는 방법에 대해 알아보겠습니다.
앞서 소개한 블로그 검색 API를 호출하는 예제를 작성해보겠습니다.
file_get_contents 함수를 이용해 간단하게 GET 호출을 수행하는 방법에 대해 알아보겠습니다.
앞서 소개한 블로그 검색 API를 호출하는 예제를 작성해보겠습니다.
http://apis.daum.net/search/blog?apikey=[발급받은 apikey]&q=[검색어]
먼저 확인하기 #
여기서 잠깐!
file_get_contents 함수는 PHP 4.3 이상에서 지원하는 함수입니다. php -v 를 통해 PHP 버전이 4.3 이상인지 확인하세요. 또한 file_get_contents 로 특정 URL에 접근하기 위해선
fopen_wrappers 가 enable 상태여야 합니다.
fopen_wrappers 가 enable 상태여야 합니다.
<?php phpinfo(); ?>
phpinfo를 통해 allow_furl_open 값을 찾아 on 여부를 확인해주세요.
호출하기 #
file_get_contents 를 이용하는 방법은 무척 간단합니다.
$request = 'http://apis.daum.net/search/blog?apikey=[사용자 api키]&q='.urlencode('다음');
요청하고자 하는 URL을 정의합니다. q는 검색 쿼리로 utf-8로 인코딩합니다. PHP의 urlencode 함수를 사용할 수 있습니다.
$response = file_get_contents($request);
요청 URL을 파라미터로 부여하면 file_get_contents 함수로 응답 받아올 수 있습니다.
응답내용을 파싱하기 #
응답내용은 기본적으로 RSS 2.0 으로 전달됩니다. output=xml 파라미터를 추가해 XML형태로 받아올 수 있으며 JSON으로 받아올수도 있습니다. 여기서는 RSS 응답값을 처리해보겠습니다. PHP 5 이상을 사용한다는 가정하에 PHP 5에 새로이 추가된 SimpleXML extension을 이용해보겠습니다.
<?php phpinfo(); ?>
SimpleXML이 설치되어 있는지 확인합니다.
$phpobject = simplexml_load_string($response);
SimpleXML을 이용하면 위와 같이 단 한줄의 명령으로 XML정보가 PHP 오브젝트로 변환됩니다. print_r 명령을 통해 $phpobject 변수의 내용을 확인할 수 있습니다.
print_r($phpobject);
XML-RPC #
XML-RPC를 이용하는 방법은 REST에 비해 조금 더 복잡합니다. 현재 "쓰기"기능을 지원하는 블로그 API는 XML-RPC를 사용하고 있습니다. XML-RPC는 PHP 컴파일시 --with-xmlrpc=DIR 옵션을 통해 PHP 4.1 이상에서 기본으로 지원합니다. 하지만 옵션을 주지 않았다면 PHP를 재컴파일해야 합니다. PHP 를 컴파일 하지 않으시려면 별도의 외부모듈을 이용하는 방법이 있습니다.
XML-RPC for PHP #
XML-RPC for PHP Homepage에 접속하여 라이브러리를 다운받습니다. 이 라이브러리는 순수하게 PHP로 작성되었으며 별도 외부 모듈을 필요로 하지 않습니다.
오류 처리 #
오류는 다음과 같은 XML 로 전달됩니다.
<?xml version="1.0" encoding="UTF-8"?>
<apierror>
<code></code>
<message></message>
<dcode></code>
<dmessage></dmessage>
</apierror>
각 서비스별 에러는 각각의 API 문서에 자세히 기술되어 있습니다.
참고자료 #
PHP: Make Yahoo! Web Service REST Calls - Yahoo! Developer Network
PHP: Parse Yahoo! Web Service REST Calls - Yahoo! Developer Network


