나라기록검색 OpenAPI Library for PHP는 나라기록검색 OpenAPI를 PHP에서 사용할 수 있게 해주는 라이브러리입니다. XML파싱과 HTTPREQUEST로 XML을 요청하기 위해 xmlparser class와 httprequest class를 사용하였습니다.
작성자 : 박영식
나라기록검색 OpenAPI Library for PHP에 관해 버그 신고를 하거나, 기타 문의할 부분이 있다면, 작성자(박영식)에게 연락을 주세요. 제 홈페이지(http://lispro.ohpy.com)나 메일(suritam9@nate.com) 등으로 연락하시면 됩니다.
다운로드
나라기록검색 OpenAPI Library for PHP는 제 홈페이지에서 받을 수 있습니다.(이 게시물)
<aos.zip 의 구성>
PHP.HTTPRequest.php // httprequest class
xmlparser.php // xmlpasing class
aos.php // 나라기록검색 OpenApi Library for PHP
의존성
나라기록검색 OpenAPI Library for PHP은 다음과 같은 조건을 만족해야 사용할 수 있습니다.
PHP 5.1 이상
SPL - Standard PHP Library
SimpleXML
인클루드 한 라이브러리
XML Parser Class (GNU General Public License)
PHP.HTTPRequest (GNU General Public License)
나라기록검색 OpenAPI Library for PHP에서는 PHP함수 file_get_contents()를 서버에서 사용할 수 없는 경우를 위해 HTTPRequest를 사용했습니다.
aos.php를 포함시키시면 상기한 라이브러리를 포함하고 있습니다.
require_once 'aos.php';
라이브러리를 로드한 다음에는 나라기록검색 OpenAPI를 사용하기 위해 인증키를 발급 받으셔야합니다.
나라기록검색 서비스담당자(국가기록원 나라기록검색서비스 웹마스터, arc-search@mopas .go.kr)에게 아래 정보를 기록하여서 메일을 보내시면, 인증키를 메일로 발송하여 드립니다. 발급 받은 인증키를 이용하여 OpenAPI를 이용 하실 수 있습니다.
- 기관명
- 기관주소
- 담당자명
- 전화번호
- 이메일
- 사용목적
자세한 내용은 나라기록 100배 활용하기 나라기록검색 OpenAPI 활용을 참고하세요.
http://search.archives.go.kr/ArchivesHelp06.htm
라이브러리를 로드한 다음에는 api키를 설정합니다.
Aos::$aoskey = '나라기록검색서비스 openAPI key';
참고문서에는 rc_type이 필수 parameter로 되어 있는데, 요청하지 않으면, rfile과 ritem이 같이 나옵니다. 그래서 더 많은 검색결과가 제공됩니다.
display의 기본값이 10이라고 되어 있는데, 현재는 20개가 나옵니다.
검색어를 입력하며, 여러 결과를 출력해 주는데, 검색어를 지정합니다.
$query = "검색어";
원하는 검색결과를 다음과 같이 제공합니다.
1. 검색결과
제공되는 검색결과 : total, title, prod_name, prod_year, is_open, link
rc_code, rc_rfile_no, rc_ritem_no
2. 상세정보 page(HTML scrapping)
상세정보와 철의 경우 관련 건, 건의 경우 철제목에 대한 상세정보 page를 리턴합니다.
※ 현재 링크에 QUERY가 달리지 않아, QUERY를 붙여주는 처리를 했습니다.
- 검색하기 : 아래와 같이 생성하게 되면, 결과가 리턴됩니다.
$result = new Aos($query,$param); // 생성
1. 검색결과는 search함수로 $param차이를 두고 요청합니다. 결과는 각 변수에 저장되어 있으며, $result->item->rc_code, $result->item->title 등으로 이용하시면 됩니다. 첫 번째 결과의 경우는 item[1]->title, 두 번째 결과는 item[2]->title로 사용하게 되어 있습니다.
예제코드
<?
include_once 'aos.php'; // 필수 라이브러리
Aos::$aoskey=""; // 필수 apikey
$query="검색어"; // 필수 쿼리
$prod_year_from;
$prod_year_to;
$prod_code;
$is_open;
$online_reading="Y";
$record_type;
$doc_type;
$mgt_organ;
$sort;
$order;
$display=7; // 기본 설정
$pageno=1; // 기본 설정
$param="&prod_year_from=".$prod_year_from."&prod_year_to=".$prod_year_to."&prod_code=".$prod_code."&is_open=".$is_open."&online_reading=".$online_reading."&record_type=".$record_type."&doc_type=".$doc_type."&mgt_organ=".$mgt_organ."&sort=".$sort."&order=".$order."&display=".$display."&pageno=".$pageno;
$result = new Aos($query,$param); // 생성자
echo $result->title."(".$result->total.")"; // 국가기록원 오픈 API 검색 결과(int)
foreach($result->item as $item):
echo "<li>".$item->title."</li>";
endforeach
?>
-----------------------------결----------------과-------------------------------------
국가기록원 오픈 API 검색 결과(3)
레퍼런스
생성자 : $name = new Aos(string $query, string $param)
매서드 : $name->Aos(string $query, string $param)
url을 생성하고, 파싱함수를 호출한다.
$name->parsing(string $url)
생성된 url을 httprequest로 요청하여 파싱하고, 간단한 변수에 저장한다.
$name->doc_type(string $type)
기호로 된 기록물 형태를 설명글로 반환한다.
$name->arcave_type(string $type)
기호로 된 기록물 유형을 설명글로 반환한다.
$name->link(string $url)
해당 url 정보의 내용을 출력합니다.
멤버 $result = new Aos(string $query, string $param); // 생성
$result->title; // 요청 url 문서의 title
$result->total; // 검색 총 개수
$result->url; // 요청 url
$result->query; // 요청한 query
// 요청 파라미터 //
$result->pageno;
$result->display;
$result->prod_year_from;
$result->prod_year_to;
$result->prod_code;
$result->is_open;
$result->online_reading;
$result->record_type;
$result->doc_type;
$result->mgt_organ;
$result->sort;
$result->order;
// 요청 파라미터 //
$result->item->rc_type; // 개별 검색 결과 철/건구분(철:RFILE/건:RITEM)
$result->item->rc_code, ; //기록물 연계 기관 번호,기록물 철 번호
$result->item->rc_rfile_no; //,기록물 건 번호를 뜻합니다.
$result->item->rc_ritem_no; //내부적으로 검색된 해당 기록물을 찾아가기
위한 키로 사용됩니다.
$result->item->title; // 검색결과 문서의 제목[철제목, 건제목]
$result->item->is_open; // 공개구분
$result->item->prod_year; // 생산년도
$result->item->prod_name; // 생산기관명
$result->item->mgt_org_name; // 소장기관명
$result->item->arcave_type; // 기호로 표시한 기록물 유형
기록물 유형
[01:일반기록물, 02:시청각기록물, 03:대통령기록물, 04:총독부기록물, 05:정부간행물, 06:해외기록물, 07:역사기록물, 08:행정박물, 09:민간기록물, 10:영화필름, 11:방송프로그램]
$result->item->arcavetype; // 설명글로 표시한 기록물 유형
$result->item->doc_type; // 기호로 표시한 기록물 형태
기록물 형태
[1:행정박물(관인류), 2:행정박물(상징기념물), 3:행정박물(사무집기류), 4:행정박물(기타), A:일반문서류, B:도면류, C:사진,필름류, D:녹음,동영상류, E:카드류, F:대장류, G:국무회의록, H:지도, I:대통령전자문서, M:정부간행물, O:일반도서, P:총독부간행물]
$result->item->doctype; // 설명글로 표시한 기록물 형태
댓글 달기