티스토리 뷰

데일리 과제

[W7D3] 기상청 사람들의 Open API

PMB10 김무종 2022. 3. 8. 17:18

기상청 사람들

요즘 재미있게 보고 있는 드라마 기상청 사람들. 최근 방영중인 JTBC 토일 드라마 기상청 사람들은 열대야보다 뜨겁고 국지성 호우보다 종잡을 수 없는 기상청 사람들의 일과 사랑을 그린 직장 로맨스 드라마이다. 이 드라마를 통해서 기상청에서 일하는 사람들이 어떻게 데이터를 활용하는지 직관적으로 느낄 수 있었다. 그래서 오늘은 날씨데이터를 통해 공공API를 활용하는 방법에 대해 분석해보려고 한다. 날씨데이터 API는 누구나 사용가능하도록 개방되어 있는 대표적인 Open API이다. 

 

 


API가 뭔데?

 

API(Application Programming Interface)는 응용 프로그램에서 사용할 수 있도록 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있도록 만든 인터페이스를 말한다. 이런 API 중 누구나 사용가능하도록 개방되어 있는 것을 오픈 API라고 하며, 데이터를 공개하여 애플리케이션 및 서비스를 개발할 수 있도록 개발자와 사용자에게 공유하는 프로그램을 말한다.

 

RESTful API

 

 

RESTful API는 HTTP 통신에서 어떤 자원에 대한 CRUD 요청을 Resource와 Method로 표현하여 특정한 형태로 전달하는 방식이다. 즉, 어떤 자원에 대해 CRUD(Create, Read, Update, Delete)연산을 수행하기 위해 URI로 요청을 보내는 것으로, Get, Post 등의 방식을 사용하여 요청을 보내며, 요청을 위한 자원은 특정한 형태로 표현됩니다. 한마디로 REST의 원리를 따르는 API라고 생각하면 된다.

 

API를 아무리 잘 설계한다고 하더라도 각자 필요한 방식에 맞게 다양하게 설계하면 유지보수 하는데 어려움이 있을 수 있다. 이런 문제를 해결하기 위해 일정한 아키텍처의 제약 조건을 준수하는 애플리케이션 프로그래밍 인터페이스를 만들어 사용하기로 하였는데 그 중 대표적인 방식이 RESTful API다. RESTful API는 CRUD 표현 방식을 하나의 주소로 관리하여 타 API 방식보다 주소 개수가 줄어들어 업무 파악이 쉽다.

 

 

 

Open API

 

API 중 누구나 사용가능하도록 개방되어 있는 것을 Open API라고 하며, 데이터를 공개하여 애플리케이션 및 서비스를 개발할 수 있도록 개발자와 사용자에게 공유하는 프로그램을 말한다.

 

Open API 활용 사례

 

 

잘 설계한 API 오픈해 제공하는 이유는 자사의 서비스의 기능을 다양한 서비스에서 활용할 수 있도록 해 서비스의 저변을 넓히는 목적이 있다. 메타 서비스를 제공하는 대기업들의 시장 확대를 목적으로 오픈 API를 운영하거나 공공의 목적으로 비영리기관에서 무료로 API를 제공하는 경우도 있다.


기상청 API를 알아보자

기상청에서 제공하는 모든 오픈 API서비스는 행정안전부에서 운영중인 공공데이터포털을 통해 제공되고 있다. 공공데이터포털은 공공기관이 생성 또는 취득하여 관리하고 있는 공적 정보를 한 곳에서 제공하는 일종의 통합 창구이다. 포털에서는 국민이 쉽고 편리하게 공공데이터를 이용할 수 있도록 파일데이터, 오픈 API, 시각화 등 다양한 방식으로 제공하는데, 쉽고 편리한 검색을 통해 원하는 공공데이터를 빠르고 정확하게 찾을 수 있다.

 

한국환경공단 API의 기능과 구조

기능 : 미세먼지(PM10, PM2.5)에 대한 지역별 주의보 경보 발령/해제시간, 농도를 조회하기 위한 서비스
구조 : 공공데이터포털에서 원하는 데이터를 취득하는 프로세스를 통해 설명

 

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

1. 공공데이터 포털에 접속, 로그인한다. 

 

2. 원하는 자료를 검색한다.

  여기서는 오늘날 제일 핫(?)한 미세먼지 데이터를 가져와서 대기오염 정보를 받아 볼 예정이다.

 

3. 활용 신청하기, 사용 문서 다운로드하기

한국환경공단_에어코리아_미세먼지 경보 발령 현황자료에 활용신청 CTA를 이용해서 필요한 정보를 기입한다. 

4. 개발 계정 신청하기

신청이 되면 활용 승인이 되고 한국환경공단_에어코리아_미세먼지 경보 발령 현황을 열람할 수 있다.

서비스정보 하단에 일반인증키를 API서버에 요청하면 결과값을 받을 수 있다.

 

 

5. 어떻게 사용하는지 문서 확인하기 (구조파악)

 

 

 

 


 

교환 데이터 표준 

<JSON과 XML 특징>

JSON
(JavaScript Object Notation)
XML
(eXtensible Markup Language)
1. 데이터를 저장하고 전달하기 위해 고안된 데이터 형식
2. 사람과 기계가 동시에 읽기 편한 구조
3. 다양한 프로그래밍 언어에 의해 파싱(Parsing)될 수 있음
4. 서버로부터 데이터를 전송 받을 수 있음
종료태그 사용하지 않음 종료태그 사용함
구문이 짧음 JSON에 비해 구문이 김
더 빨리 읽고 쓸 수 있음 처리속도가 JSON보다 느림
배열을 사용할 수 있음 배열을 사용할 수 없음

 

 

 

한국환경공단_에어코리아_미세먼지 경보 발령 현황 API의 역할, 입출력 구조

 

6. 요청 / 응답 메시지 예제

요청메시지
http://apis.data.go.kr/B552584/UlfptcaAlarmInqireSvc/getUlfptcaAlarmInfo?year=2020&pageNo=1&numOfRows=100&returnType=xml&serviceKey=서비스키
응답메시지
<response>
  <header>
    <resultCode>00</resultCode>
    <resultMsg>NORMAL_CODE</resultMsg>
  </header>
  <body>
    <items>
      <item>
        <clearVal>28</clearVal>
        <sn>262</sn>
        <districtName>경기</districtName>
        <dataDate>2020-10-28</dataDate>
        <issueVal>76</issueVal>
        <issueTime>03:00</issueTime>
        <clearDate>2020-10-28</clearDate>
        <issueDate>2020-10-28</issueDate>
        <moveName>남부권</moveName>
        <clearTime>13:00</clearTime>
        <issueGbn>주의보</issueGbn>
        <itemCode>PM25</itemCode>
      </item>
      (중략)
      <item>
        <clearVal>66</clearVal>
        <sn>156</sn>
        <districtName>전북</districtName>
        <dataDate>2020-04-04</dataDate>
        <issueVal>166</issueVal>
        <issueTime>15:00</issueTime>
        <clearDate>2020-04-04</clearDate>
        <issueDate>2020-04-04</issueDate>
        <moveName>정읍권역</moveName>
        <clearTime>17:00</clearTime>
        <issueGbn>주의보</issueGbn>
        <itemCode>PM10</itemCode>
      </item>
    </items>
    <numOfRows>100</numOfRows>
    <pageNo>1</pageNo>
    <totalCount>251</totalCount>
  </body>
</response>
 

위의 내용을 해석한다면.

"2020년 4월 4일 15시, 전북 정읍권역에 미세먼지 경보가 발령되었다. 경보 단계는 '주의보' 단계로 미세먼지(PM10) 시간당 평균 농도는 166㎍/m3이다. '주의보' 단계는 2020년 4월 4일 17시에 미세먼지 농도 66㎍/m3로 해제되었다"라고 할 수 있다.  

 

 

7. 프로그램 코드 확인

Java, 파이썬, Objective-C 등 프로그램 언어의 샘플이 제공된다.

 

8. End Point

 

 

10. 요청변수(Request Parameter)와 출력결과(Response Element)

 


 

<이미지 및 자료 출처>

 

Restful API

Restful API란?HTTP 통신에서 어떤 자원에 대한 CRUD 요청을 Resource와 Method로 표현하여 특정한 형태로 전달하는 방식입니다. 즉, 어떤 자원에 대해 CRUD(Create, Read, Update, Delete)연산을 수행하기 위해 URI로

velog.io

 

 

오픈API와 오픈 플랫폼의 구성요소 [3부] - 오픈 플랫폼의 구성요소 - 투이컨설팅

[1부] 오픈 API 란 무엇인가[2부] 오픈 API 디자인과 문서화[3부] 오픈 플랫폼의 구성요소 1, 2부에 걸쳐서 웹 API가 무엇이며, 어떻게 디자인 하고 문서화 하는지 알아보았다. 오픈 웹 API를 배포하고

www.2e.co.kr

 

 

공공데이터포털 OPEN API 사용하는 방법 (API키 발급 과정부터 개발 문서 확인, 자바코드로 Response

OPEN API 사용하는 방법 (OPEN API 사용해본적 있나요?) 공공데이터 포털에서 제공하는 OPEN API 사용하는 방법에 대해서 간단히 공부해보았다. (원래는 자바에서 XML 파싱 라이브러리를 테스트해보려고

jeong-pro.tistory.com

 

 

W7D3 조금이라도 재밌게 배워보는 API #코드스테이츠 PMB 8기

당신은 지금 A 스타트업의 인턴 PM이다. 팀장님이 이거 왜이러는지 알아오라셔서 간 개발팀, 남주혁이 ...

blog.naver.com

 

댓글