메뉴 닫기

공공데이터포털 openAPI 사용 예제

openAPI 실사용 예제 입니다.

주변에서 openAPI 이야기는 자주 듣고 있는데

실질적으로 어떻게 사용하고 있는지 궁금한 사람들을 위한 포스트 입니다.

 

마침  openAPI 가 있어서 데이터 가져오는 방법 소개하겠습니다. php curl 을 사용했습니다.

https://www.data.go.kr/index.do

공공 데이터 포털에서 회원 가입을 하고

가져오고 싶은 openAPI 를 검색합니다

.

저는 재무정보 API 를 선택하겠습니다.

활용 신청을 하면 바로 사용 가능 합니다

빨간 부분 의 url에서 데이터를 가져올겁니다.

https://apis.data.go.kr/1160100/service/GetFinaStatInfoService_V2/getIncoStat_V2 가 되겠죠

참고 문서를 통해서 세부사항을 살펴봅니다. 복잡하니 예제 하나만 보겠습니다.

 

GET 요청은 URL, PARAMETER 두 부분으로 나뉩니다.

URL

http://apis.data.go.kr/1160100/service/GetFinaStatInfoService_V2/getSummFinaStat_V2?

PARAMETER

pageNo=1  //요청 페이지 번호

numOfRows=1  //요청 페이지 번호에서 나온 결과 갯수

resultType=xml   //응답결과 데이터 형식 (xml/json)

fnccmpNm=%EA%B9%80%EC%B2%9C%EC%A0%80%EC%B6%95%EC%9D%80%ED%96%89 //조회하고싶은 기업 이름     

URL디코딩하면 ‘김천저축은행’ 입니다.  URL인코팅 해서 입력해야 합니다

serviceKey=인증키   //데이터포털 마이페이지에서 가져옵니다. 계정당 하나

 

합치면 -> http://apis.data.go.kr/1160100/service/GetFinaStatInfoService_V2/getSummFinaStat_V2?pageNo=1&numOfRows=1&resultType=xml&fnccmpNm=%EA%B9%80%EC%B2%9C%EC%A0%80%EC%B6%95%EC%9D%80%ED%96%89&serviceKey=인증키

파라미터 구분은 &로 해줍니다

 

응답 결과

xml json
<?xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”?>
<response>
    <header>
        <resultCode>00</resultCode>
        <resultMsg>NORMAL SERVICE.</resultMsg>
   </header>
   <body>
        <numOfRows>1</numOfRows>
        <pageNo>1</pageNo>
        <totalCount>2</totalCount>
        <items>
            <item>
                <basDt>20191231</basDt>
                <bizYear>2019</bizYear>
                <crno>1746110000741</crno>
                <curCd>KRW</curCd>
                <enpBzopPft>3868854558550</enpBzopPft>
                <enpCptlAmt>482403125000</enpCptlAmt>
            </item>
        </items>
    </body>
</response>

{
    “response”: {
       “header”: {
          “resultCode”: 0,
          “resultMsg”: “NORMAL SERVICE.”
       },
       “body”: {
           “numOfRows”: 1,
          “pageNo”: 1,
          “totalCount”: 2,
          “items”: {
             “item”: {
                “basDt”: 20191231,
                “bizYear”: 2019,
                “crno”: 1746110000741,
                “curCd”: “KRW”,
                “enpBzopPft”: 3868854558550,
                “enpCptlAmt”: 482403125000
                }

            }
        }
    }
}

 

인증키 얻는 법

openAPI 마다 인코딩 or 디코딩 인증키를 사용합니다. 

인증키 부분에 넣어 보고 맞는 것 쓰시면 됩니다.

코드에서 사용하는 경우

<?php

$encoding_key = openAPI 인코딩 인증키;
$decoding_key = openAPI 디코딩 인증키;

$parameter = array (
    ‘numOfRows’=>1,                         //요청 페이지 번호에서 나온 결과 갯수
    ‘pageNo’=>1,                                 //요청 페이지 번호
    ‘resultType’=>’json’,                      //응답 형식
    ‘serviceKey’=>$decoding_key,     //이번의 경우 디코딩 인증키 사용
    //’fnccmpNm’=>’삼성전자’           //조회 할 기업
    ‘crno’=>1301110006246               // 기업 법인등록 번호 fnccmpNm 과 둘 중 하나만 하면 됩니다
);

$sub1 = http_build_query($parameter);      //URL 인코딩 ‘삽성전자’ 가  ‘%ec%82%bc%ec%84%b1%ec%a0%84%ec%9e%90’ 로 변합니다. 중간에 &도 삽입
 
$main_url = “http://apis.data.go.kr/1160100/service/GetFinaStatInfoService_V2/”;                 //메인 url

$sub_url1 = “getSummFinaStat_V2?”.$sub1;               //파라미터 부분

$ch = curl_init();               //curl 시작
 
curl_setopt($ch, CURLOPT_URL, $main_url.$sub_url1);               //메인 url + 파라미터
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);              //결과값 문자로 저장
 
$result = curl_exec($ch);               //결과값 받기
 
curl_close($ch);               //curl 종료

var_dump($result);               //결과
?>
 
openAPI php사용 결과 (원본)
{

  • response:{
    • body:{
      • items:{
        • item:[
          1. {
            • basDt:“20151231”,
            • crno:“1301110006246”,
            • bizYear:“2015”,
            • fnclDcd:“ifrs_ConsolidatedMember”,
            • fnclDcdNm:“연결요약재무제표”,
            • enpSaleAmt:“200653482000000”,
            • enpBzopPft:“26413442000000”,
            • iclsPalClcAmt:“25960995000000”

            }

          ]

        },

      • numOfRows:1,
      • pageNo:1,
      • totalCount:16

      },

    • header:{
      • resultCode:“00”,
      • resultMsg:“NORMAL SERVICE.”

      }

    }

}

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x