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> |
{ } |
인증키 얻는 법
openAPI 마다 인코딩 or 디코딩 인증키를 사용합니다.
인증키 부분에 넣어 보고 맞는 것 쓰시면 됩니다.
코드에서 사용하는 경우
<?php
- “response“:{
- “body“:{
- “items“:{
- “item“:[
- {
- “basDt“:“20151231”,
- “crno“:“1301110006246”,
- “bizYear“:“2015”,
- “fnclDcd“:“ifrs_ConsolidatedMember”,
- “fnclDcdNm“:“연결요약재무제표”,
- “enpSaleAmt“:“200653482000000”,
- “enpBzopPft“:“26413442000000”,
- “iclsPalClcAmt“:“25960995000000”
}
]
- {
},
- “item“:[
- “numOfRows“:1,
- “pageNo“:1,
- “totalCount“:16
},
- “items“:{
- “header“:{
- “resultCode“:“00”,
- “resultMsg“:“NORMAL SERVICE.”
}
}
- “body“:{
}