본문으로 이동

Open api 활용: 두 판 사이의 차이

lse
편집 요약 없음
126번째 줄: 126번째 줄:
공공 주차장 데이터 활용으로 해보자
공공 주차장 데이터 활용으로 해보자


 
[https://lsworkplace.sharepoint.com/sites/o365m_A003ORGKA807/_layouts/15/Doc.aspx?sourcedoc=%7B1c5b7fac-b51a-4931-aa28-230d5ab6e1e3%7D&action=edit&wd=target%2898_%EC%82%B0%EC%97%85%EB%8F%99%ED%96%A5.one%7Cf0ddd01c-8c44-4af7-aaca-54535f18de1e%2F%EC%A0%84%EA%B5%AD%EA%B3%B5%EC%98%81%EC%A3%BC%EC%B0%A8%EC%9E%A5%7C5a4f3668-c90e-4a93-9fab-68fcbfdfe1fd%2F%29&wdorigin=703&wdpartid=%7Bfb996bb4-fa43-400a-b373-0ebd412eefed%7D%7B162%7D&wdsectionfileid=265910ca-beeb-4ba3-af65-bca679fd8dd6 | 내부링크]





2025년 6월 11일 (수) 06:30 판

data.go.kr 에서 OPEN API로 활용하는 예를 만들어 사용한다.

사용 방법

OPEN API 사용하는 방법 간략 기술

  1. 공공 데이터 포털 - 접속 및 로그인 (www.data.go.kr)
  2. 원하는 자료 검색
  3. 활용 신청하기, 사용 참고 문서 다운로드
  4. 개발 계정 신청하기 - API키 발급
  5. 어떻게 사용하는지 문서 확인
  6. 브라우저를 이용한 테스트


샘플 작업

키 발급 신청

1. 승인요청하기

2. 요청사항 입력 및 동의

3. 승인 신청 결과 확인


키 가져오기: 마이페이지

  • 상단의 마이페이지에서 키 가져 오기


  • 키 확인 - 개인키와 다름


사용 및 미리보기

  • 미리 보기에서 사용 및 파라미터를 확인한다.


  • 미리 보기 확인

  • URL 확인 : 홈 >> 마이페이지 >> 데이터 활용 >> Open API>> 활용신청 현황


자료 방식

  1. XML
  2. JSON


  • 인터페이스 표준

REST의 GET 방식

  • JSON 방식으로 응답시
&_returnType=json
  • URL 구성

http://api.data.go.kr/openapi/tn_pubr_prkplce_info_api?serviceKey="발급된 API키"&pageNo=1&numOfRows=100&type=xml

SERVICE KEY IS NOT REGISTERED ERROR 문제 해결

  • 이유 추정

아마도, web browser마다 자동으로 인코딩해서 API를 날리는 기준이 틀려서, 헛갈리는 것 같음.

실제로, 공공데이터 포털에서도 encoding과 decoding을 따로 두고 필요한 것 사용하라고 되어 있어서, 더 문제인 듯...

  • 문제 해결

1. 처음 신청하고 나서, 1, 2시간 후

decoding 으로 크롬에서 http로 작성해서 전송 테스트

http://api.data.go.kr/openapi/tn_pubr_prkplce_info_api?serviceKey=' Decoding API key사용'&pageNo=1&numOfRows=100&type=xml


2. 안된다고 질의 하면, 그쪽에서 뭐 하고(?) 된다고 연락옴

--> 아마도 API Key를 Encoding으로 강제 설정하는 듯

--> 이 경우, Encoding만 정상 데이터가 출력되고, Decoding으로 접근하면 NODATA ERROR로 나옴 (이게 강제로 ENCODING 설정으로 의심 증거)

3. 프로그램 사용

대부분의 프로그램은 자동으로 ENCODING을 실시하므로, decoding을 사용하는 것이 정상이나, 2번에서 강제로 설정되었기 때문에, 프로그램에서 다시 API키를 encoding 하지 않게 분리해서 다시 합쳐줘야 함.

import requests from urllib.parse import urlencode

url = 'http://api.data.go.kr/openapi/tn_pubr_prkplce_info_api' servicekey = 'Encoding된 API Key 사용'

  1. serviceKey를 제외한 나머지 파라미터들

other_params = {

   'pageNo': '1', 
   'numOfRows': '100', 
   'type': 'xml',
   # ... 나머지 파라미터들

}

  1. URL을 직접 구성

encoded_params = urlencode(other_params) full_url = f"{url}?serviceKey={servicekey}&{encoded_params}"

response = requests.get(full_url) print(response.content)

결론

안된다고 연락하지 말고, encoding key, decoding key를 바꿔서 어떻게 해보자 (이상하게 바꿔 놓음)

NIA도 둘 다 올려 놓고 나몰라라 한다.


공공주차장 데이터 활용

공공 주차장 데이터 활용으로 해보자

| 내부링크