DNA 포럼 API 서비스 모음 DNA Lens

PHP로 오픈API 이용 하기


PHP 는 유연하고 풍부한 기능을 갖춘 언어입니다. 그 특성에 걸맞게 PHP로 Daum 오픈 API를 이용하는 방법은 수십가지가 넘습니다. 여기서는 REST, XML-RPC 각 한가지 방법을 선정해 소개해드리겠습니다. 이외에도 여러가지 방법이 있으니 각자 재미있는 방법들을 연구해보시기 바랍니다.

REST #

REST 방식, 그 중 [http]file_get_contents 함수를 이용해 간단하게 GET 호출을 수행하는 방법에 대해 알아보겠습니다. [http]앞서 소개한 블로그 검색 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에 접근하기 위해선 [http]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 #

[http]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 문서에 자세히 기술되어 있습니다.

참고자료 #