본문 바로가기

신입 개발자 면접 기초

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

반응형

OPEN API 사용하는 방법 (OPEN API 사용해본적 있나요?)

공공데이터 포털에서 제공하는 OPEN API 사용하는 방법에 대해서 간단히 공부해보았다.

(원래는 자바에서 XML 파싱 라이브러리를 테스트해보려고 적당한 XML 파일을 찾다가 OPEN API가 JSON 형식 말고도 XML형식으로 제공한다는 것이 생각나서 테스트해봤다.)

신입 개발자로 취업할 때 가끔씩 OPEN API 사용 경험을 물어보는 곳도 있었다.

이미 많은 신입 개발자들이 포트폴리오를 만들면서 어떤 프로젝트에서는 OPEN API를 사용해봤을거라 생각되지만 정리하는 겸, 사용해보지 않은 분들도 가볍게 경험할 겸해서 OPEN API를 사용하는 방법에 대해 정리한다.

(2020.06.03 - 페이지 화면도 많이 바뀌었지만 검색창이나 신청버튼 등이 그대로 있으므로 참고해도 무방하다.)


공공데이터 포털 OPEN API 사용 프로세스

1. 공공데이터 포털에 접속, 로그인한다. (https://www.data.go.kr/)


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

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

[미세먼지 검색화면]

[미세먼지 검색결과]

검색결과를 보면 파일데이터 9건, 오픈API 5건이 있다. 그 중 내가 원하는 API를 선택하면된다. 여기서는 한국환경공단_대기오염정보 조회 서비스를 사용할 것이다.


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

위에 보이는 사진에서 "활용신청" 버튼을 눌러서 활용을 신청하면 된다.

그 전에 참고문서 부분에 있는 문서 파일을 다운로드하는 것이 좋다. 이 문서에 API에 대한 자세한 내용이 있다.

그리고 간단하게 다른 내용을 보는 것도 좋다.

End Point는 저 URL로 request를 보내라는 것으로 이해하면되고 API 유형은 REST, 데이터 기본 포맷은 XML이다 정도 확인하고 넘어간다. (XML만 제공되는 것은 아니다. 밑에서 JSON으로도 받음)


4. 개발 계정 신청하기

[개발 계정 신청화면]

( *** 이미 대기오염정보조회 API는 신청을 해놔서 화면을 보여줄 수 없으므로 대기 중금속 정보 API를 신청하는 화면으로 대체했다. 상세기능정보만 다르기 때문에 똑같이 확인만하면 된다.) 

"심의 여부"가 "자동 승인"이므로 신청완료만하면 바로 API를 사용할 수 있다.

단, 아래에 상세기능 정보에서 일일 트래픽이 1000(대기오염정보API에서는 500)이므로 1000회 조회를 하면 더 오늘은 더 이상 사용할 수 없다.

더 많은 트래픽이 필요하다면 추가 신청과 승인절차를 기다리면 사용할 수 있게 된다.

승인일로부터 24개월이 가능한 점 확인을 하고, 시스템 유형은 일반적으로 일반으로 두면 된다.

그리고 상세기능정보에서 자신이 원하는 API 자료를 선택해서 필요한 것만 받을 수 있다.

위에서는 그냥 다 체크한다.


5. 마이페이지> 오픈API > 개발계정 API키 받기

마이페이지에 오픈 API에 개발계정이라는 탭으로 가면 활용에 1건이 되어있을 것이다. (이전에 사용하던 API가 있다면 더 있을 수 있음)

거기서 "대기오염정보 조회 서비스API"를 눌러보면 키 받는 버튼이 있다.

이 버튼을 눌러서 키를 받는다.

위 사진에서는 일반 인증키 재발급이라고 나와있지만 처음할 때는 일반키 발급(?) 이라고 써있을 것이다.

그것을 눌러 키를 받으면 검은색으로 칠해진 부분인 일반 인증키부분에 키 값이 발급될 것이다.

그러면 해당키를 사용해서 API서버에 요청하면 결과값을 받을 수 있다.

또한 3번에서 받은 참고문서를 여기서도 받을 수 있다.


6. 어떻게 사용하는지 문서 확인하기

이제 사용에 필요한 API key는 얻었으니 어디에 어떻게 보내는지만 알면 된다.

그 방법은 문서에 잘 나와있다.

[목차화면]

목차에서 사용가능한 서비스 목록을 확인한다.

위 사진에서는 2.2. 대기오염정보조회 서비스를 이용할 예정이니 해당 페이지로 가서 확인해보면된다.

해당 페이지로가면 서비스 인증방법이 서비스 key만 있으면 된다고 동그라미 표시가 되어있고 교환 데이터표준으로 XML과 JSON을 제공한다고 되어있다.

그 위에 밑줄을 못 쳤는데 제일 중요한 것인 인터페이스 표준으로 REST의 GET 방식으로 요청하라고 나와있다.

또한 메시지 교환 유형이 Request-Response이라는 것을 알 수 있고 실시간 정보지만 매 초당이 아니라 10분마다 측정된 값이 반영되는 것을 알 수 있다.

끝으로 JSON방식으로 응답을 받고 싶으면 &_returnType=json 을 추가하면 된다고 한다.

(밑에서 테스트할 때 해당 파라미터값을 넣어서 json으로 받아 본다.)

[요청/응답 메시지]

중간에 이렇게 메시지 sample이 있다.

저 메시지 부분에서 서비스키만 내가 아까 받은 api키를 넣고 해당 URL로 요청하면 응답을 받을 수 있다.

각 파라미터에 대한 이해도 아래 사진처럼 문서에서 알 수 있다.

[파라미터 확인]

파라미터에 대한 설명이 나와있다. 일단 우리가 관심있는 것은 stationName으로 측정소명을 내가 알고싶어하는 위치의 측정소로 변경하는 것이고 dataTerm도 최근 1일간의 데이턴지, 1개월간의 데이턴지, 3개월간의 데이턴지 정하는 것이다.

측정소는 해당 API에서도 알 수 있지만 에어코리아의 측정소 정보에서 간단히 파악할 수도 있다.

[에어코리아 미세먼지 측정소정보]

지도에서 원하는 지역(ex 인천, 경기, 서울, ...)을 클릭하고 옆에 나오는 측정소 명으로 입력해서 테스트해보면 된다.


7. 브라우저를 이용한 테스트

이제 보낼 메시지도 알았고 메시지의 의미(파라미터)도 알았고 api key 까지 얻었으니 모든 준비가 되었다.

이제 어떤 프로그래밍 언어로 짠 프로그램이든 그냥 브라우저에서 테스트만 해보든 요청할 것만 남았다.

[브라우저 테스트 json, 브라우저 테스트 xml]

[자바 소스 json, 자바 소스 xml]

보다시피 브라우저의 URL창에다가 직접 메시지(GET방식)를 날려도 응답이 오는 것을 확인할 수 있고, 자바로 간단하게 소스를 만들어서 요청해도 받아지는 것을 확인할 수 있다.

자바 뿐만아니라 다양한 프로그래밍 언어에서 혹은 프레임워크에서 위와 유사한 방식으로 API를 호출하고 결과를 리턴할 수 있을 것이다.

끝으로 API호출하는 샘플 자바소스를 제공한다. (요새는 심지어 OPEN API 페이지에서 공식적으로 여러 언어로 지원한다... 내 원래 샘플코드를 삭제하고 가이드에 있는 코드를 가져왔다. 심지어 여러 언러(java, javascript, c++, php, curl object-c, python, nodejs)로도 샘플 코드를 지원한다.)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/* Java 샘플 코드 */
 
 
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.io.BufferedReader;
import java.io.IOException;
 
public class ApiExplorer {
    public static void main(String[] args) throws IOException {
        StringBuilder urlBuilder = new StringBuilder("http://openapi.airkorea.or.kr/openapi/services/rest/ArpltnInforInqireSvc/getMsrstnAcctoRltmMesureDnsty"); /*URL*/
        urlBuilder.append("?" + URLEncoder.encode("ServiceKey","UTF-8"+ "=서비스키"); /*Service Key*/
        urlBuilder.append("&" + URLEncoder.encode("numOfRows","UTF-8"+ "=" + URLEncoder.encode("10""UTF-8")); /*한 페이지 결과 수*/
        urlBuilder.append("&" + URLEncoder.encode("pageNo","UTF-8"+ "=" + URLEncoder.encode("1""UTF-8")); /*페이지 번호*/
        urlBuilder.append("&" + URLEncoder.encode("stationName","UTF-8"+ "=" + URLEncoder.encode("수내동""UTF-8")); /*측정소 이름*/
        urlBuilder.append("&" + URLEncoder.encode("dataTerm","UTF-8"+ "=" + URLEncoder.encode("DAILY""UTF-8")); /*요청 데이터기간 (하루 : DAILY, 한달 : MONTH, 3달 : 3MONTH)*/
        urlBuilder.append("&" + URLEncoder.encode("ver","UTF-8"+ "=" + URLEncoder.encode("1.3""UTF-8")); /*버전별 상세 결과 참고문서 참조*/
        URL url = new URL(urlBuilder.toString());
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");
        conn.setRequestProperty("Content-type""application/json");
        System.out.println("Response code: " + conn.getResponseCode());
        BufferedReader rd;
        if(conn.getResponseCode() >= 200 && conn.getResponseCode() <= 300) {
            rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        } else {
            rd = new BufferedReader(new InputStreamReader(conn.getErrorStream()));
        }
        StringBuilder sb = new StringBuilder();
        String line;
        while ((line = rd.readLine()) != null) {
            sb.append(line);
        }
        rd.close();
        conn.disconnect();
        System.out.println(sb.toString());
    }
}
cs

파라미터에서 "ServiceKey=~" 부분만 자신의 api key로 고치면 아주 잘 동작한다.

* 2020.06.03 -> 요새는 ServiceKey값 자체가 URL인코딩이 된 상태로 제공하게 되어있는 것 같다.

그래서 위 코드도 serviceKey값만 UTF-8로 인코딩하지 않고 연결하는 것을 볼 수 있다. (나머지 파라미터들은 인코딩 함)


반응형
  • 이전 댓글 더보기
  • aadd 2019.09.20 12:03

    안드로이드 스튜디오에 저렇게 자바소스를 입력하고 돌려보면 왜 기기에 앱실행이 안될까요?ㅠㅠ

  • 김춘현 2019.11.10 15:17

    감사합니다춘현

  • 김민서 2019.11.17 15:45

    안드로이드 스튜디오를 시작하자마자 마지막 사진대로 햇는데 앱 실행이 안되네요. 해결방법을 아시나요?

    • 에러코드도 보여주시면 좋을 것 같습니다.

      생성자나 이벤트 호출하는 곳에 붙이셔야 정상작동할 것이고요.

      글에 나온대로 api 서비스키도 잘 입력했는지 확인해보시고요.

      예전에 작성한 글이니 만큼 최신 API에서는 변경이 있을 수 있으니 그 부분도 확인 부탁드립니다

  • Favicon of https://humahumahuma.tistory.com BlogIcon September Choe 2019.12.05 17:56 신고

    안녕하세요, 정보 공유 감사합니다.
    저는 영화진흥원 api를 사용하려고 하는데 질문이 있습니다.

    String line;
    while((line = br.readLine()) != null)

    while 조건식 부분에서 =이 두 개 들어있는건 어떤 의미인지 궁금합니다.
    3항연산자는 아닌것같은데 제가 코린이라 이런 형식은 처음봐서 잘 모르겠습니다.

  • shrudals 2019.12.10 17:48

    혹시 파이썬으로 사용할려면 어떻게 해야되나요?ㅠㅜㅠㅜ

    • 매커니즘은 똑같습니다.
      파이썬에서 HTTPClient 라이브러리를 사용해서 API Endpoint로 HTTP 요청하면 응답으로 데이터를 받을 수 있습니다.

      대략적인 설명
      1. 'pip install requests'로 requests 모듈을 설치합니다. (requests가 파이썬에서 쓰는 HTTPClient 라이브러리로 보입니다.)
      2. 코드에서 사용
      import requests

      url = "http://openapi.airkorea.or.kr/~~서비스키~~"
      response = requests.get(url)
      print(response.content)

      이정도가 되겠습니다.

  • alsrb1 2019.12.27 16:04

    혹시 c#으로 이용할수있나요? 한다면 방법이 어떻게 되나여 ㅠㅠㅠ

    • 이 역시도 메커니즘은 똑같습니다.
      C#에서 주로 쓰는 HTTPClient 라이브러리를 이용해서 API를 제공해주는 서버의 Endpoint로 HTTP 요청을하면 응답으로 데이터를 받아볼 수 있습니다. (어디로 어떻게 보내면 되는지는 본문처럼 OPEN API문서를 참조하면 됩니다.)

      using System;
      using System.Net.Http;
      using System.Threading.Tasks;

      namespace HttpClientEx
      {
      class Program
      {
      static async Task Main(string[] args)
      {
      using var client = new HttpClient();
      var content = await client.GetStringAsync("http://webcode.me");

      Console.WriteLine(content);
      }
      }
      }
      (예제 출처 : http://zetcode.com/csharp/httpclient/)

      검색해보니까 C#에서 Http Client 라이브러리는 내장 라이브러리 "System.Net.Http.HttpClient"를 사용하나봅니다.

      그래서 위와 같은 예제를 참고하여 var response = client.GetStringAsync(""http://openapi.airkorea.or.kr/~~서비스키~~");
      로 요청을 보내고 response값을 파싱해서 사용하여야 할 것으로 보입니다.

  • 김동원 2020.02.07 21:55

    안녕하세요. 글 잘 봤습니다. 도움도 많이 되었구요!!
    한가지 궁금한 점이 있습니다.
    마지막에 ServiceKey=~ 부분만 저의 서비스키로 바꾸면 된다고 하셨는데
    서비스키라는게 일반인증키(UTF-8)을 말씀하시는건가요??
    그리고 그게 맞다면 한국말로 '서비스키'라고 되있는 부분만 지우고 그 링크를 넣으면 되는건가요??

    • 맞습니다 서비스키가 일반인증키(UTF-8) 부분에 나오는 값입니다.
      그 부분만 바꿔주셔도 됩니다. (브라우저에 URL입력창에 그냥 쳐도 나옵니다)
      단, 위의 예제에서는 "수내동"이라고 한 부분도 수내동 말고 API문서에서 제공하는 값으로 바꿔주시면 잘 나올겁니다. ex) 종로구

  • 2020.04.06 22:01

    비밀댓글입니다

    • 어떤 DB에 저장하실지는 모르겠지만... mysql 기준으로는 아래 링크를 참조해보시면 될 것 같습니다.

      미세먼지 데이터중에 어떤 정보를 수집할 것이며, 비즈니스 로직에 필요한 컬럼 설정도 해야하고... 정보가 많지 않아서 도움드리기 어렵습니다...ㅠㅠ

      https://spring.io/guides/gs/accessing-data-mysql/

  • 2020.04.15 12:34

    비밀댓글입니다

    • OPEN API를 사용하기 위한 사전 작업과 문서를 보고 이용하는 방법이 핵심이라 PHP를 위해서 글을 작성하기는 어렵습니다...
      위의 내용을 이해하셨다면, php의 경우 curl을 키워드로 검색해보시면 좋을 것 같습니다.

      아래는 php로 작성한 코드입니다.
      참고만 하시면 좋을 것 같습니다.
      (출처 : https://ponyozzang.tistory.com/405)

      <?php
      //접속 할 URL을 지정
      $url = "http://openapi.airkorea.or.kr/"."openapi/services/rest/ArpltnInforInqireSvc/getMsrstnAcctoRltmMesureDnsty"."?stationName=수내동&dataTerm=month&pageNo=1&numOfRows=10&ServiceKey=서비스키&ver=1.3";

      //cURL 세션 초기화
      $ch = curl_init();
      //URL과 옵션을 설정
      curl_setopt($ch, CURLOPT_URL, $url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      //cURL 실행
      $res = curl_exec($ch);
      //결과 표시
      var_dump($res);
      //세션을 종료
      curl_close($ch);
      ?>

  • 조금거친오빠 2020.05.26 15:00

    저 제가 이런거에는 문외한이라 아무리
    네이버에서 정보를 찾고 구글에서도 찾아봐도 이해조차 안되네요..이게 졸업작품이라 뭐라도 해야되는데 결론부터 말씀드리자면 저하고 제 친구하고 2명에서 하고 있는데 제 친구가 저보고 오픈api 파일 여는 법을 알려달라고 하더라고요 json이든xml이든 여는법을요 근데 저는 이게 뭔소린지 몰라서 물어봐도 이해를 못하겠고 그래서 네이버나 구글에다가 xml파일 여는 법 open api xml파일 여는 법 이런거를 쳐도 안나오네요 저게 무슨 소리인지 알수 있을까요,,?그리고 마지막으로 저기 코드 작성하신게 어디다가 작성한거에요??저는 친구가 말한것만 하면 될거 같은데 여는 방법하고 어떻게 하는지 쉽게 알려줄수 잇을까요.?

    • OPEN API 파일 여는 법(?)이라고 하시면 저도 도움드리기 어려울 것 같습니다...

      OPEN API는 공공데이터포털의 'API서버'에서 API, 말 그대로 인터페이스를 제공하고 있는 것이고,
      이용자는 '클라이언트'로서 요청(Request)을 보내서 응답(Response)을 받아오는 개념입니다.
      어떤 파일을 여는(?) 개념은 아닙니다.

      제 설명도 제 생각에는 충분히 똑같이 따라할 수 있을 정도로 해놨다고 생각됩니다만,, 웹 Request/Response 구조를 이해하시고 GET요청이 뭔지 등을 이해하신 후에 보시면 좀 이해가 되시지 않을까합니다.

      마지막 코드는 자바 main메서드가 있는 임의의 클래스에서 그대로 치면 됩니다...

  • BlogIcon 박현철 2020.05.27 20:34

    문의글좀 올립니다
    esp32를 이용한 미세먼지 정보를 공공데이터에서 가져올때 예제를 돌려서 해보니 api키는 공공데이터에서 발급받아 입력을 했는데 거주하는 지역의 위치값도 넣어줘야 정보를 제대로 받아올텐데 어떻게 방법을 몰라서 문의 드립니다 공공데이터,환경공단 전화를하여 방법을 물으니 참조문서를 보면 알수있다고 하는데 아무리 보아도 모르겠네요 ㅜ

     참조문서엔 한글로 입력하라고 보이는데 진작 코딩소스에는 이렇게 한글이 아닌 영어+숫자 조합으로 되어있구요

    http://openapi.airkorea.or.kr/openapi/services/rest/ArpltnInforInqireSvc/getMsrstnAcctoRltmMesureDnsty?stationName=%EA%B0%95%EB%8F%99%EA%B5%AC&dataTerm=month&pageNo=1&numOfRows=10&ServiceKey=%2BK%2FeUtPZ8GP%2FtrLfNVtZ1VWOAWEhtL4wX1uMhPosbMbAyiONvwUK5kR86HU%2BVf3%2FJ6yRnB%2Fg5w6L53lc6gt%2FmA%3D%3D&ver=1.3"; //

    위에서 %EA%B0%95%EB%8F%99%EA%B5%AC 이 부분이 위치 코드?라고 한다네요

    • 제가 적은 소스코드에서도 GET요청에 쓰일 "URL 문자열"을 "URL 객체"로 변환하는 것을 알 수 있습니다.

      말씀하신 부분은 '강동구'라는 한글을 URL인코딩(암호화)한 것입니다.
      (=웹 브라우저에서는 한글로 입력해도 URL상에서 인코딩 해줍니다.)

      제 예시에서 '수내동'이라고 나오는데 이 위치들은 측정소가 있는 위치입니다.

      openapi를 제공하는 에어코리아 사이트에서 측정소 이름 리스트를 확인할 수 있습니다. (링크 : http://www.airkorea.or.kr/web/stationInfo?pMENU_NO=93)

  • 수진 2020.05.29 15:25

    ㅜㅜ 너무 큰 도움이 되었습니다. 감사합니다..!

  • 2020.05.31 11:32

    비밀댓글입니다

    • import requests
      from urllib.parse import unquote

      API_KEY = requests.utils.unquote("받은 API KEY")

      url = "http://openapi.data.go.kr/openapi/service/rest/Covid19/getCovid19InfStateJson"

      params = {
      "serviceKey" : API_KEY,
      "pageNo" : 1,
      "numOfRows" : 10,
      "startCreateDt" : "20200320",
      "endCreateDt" : "20200531"
      }

      response = requests.get(url, params = params)

      print("content : ", response.content)

  • 이영주 2020.06.03 08:47

    안녕하세요 좋은 글 감사합니다.
    안드로이드 스튜디오 쓰려고 자바 파일로 올려주신 파일을

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate( savedInstanceState );
    setContentView( R.layout.activity_main );

    BufferedReader br = null;
    try{
    String urlstr = "http://openapi.tago.go.kr/"
    + "openapi/services/getSttnAcctoSpcifyRouteBusArvlPrearngeInfoList?"
    + "cityCode=25&nodeId=DJB8001793ND&routeId=DJB30300002ND"
    + "&ServiceKey=" +"ZP6VLmTyGU4zEOH07%2FOIom6KRUsITxqz18IJVV8oNZ1uD9SnYLG%2Fh51cs%2FekJWFh2o6f88AMu%2Bwd%2FQMhKP14ww%3D%3D";

    URL url = new URL(urlstr);
    HttpURLConnection urlconnection = (HttpURLConnection) url.openConnection();
    urlconnection.setRequestMethod("GET");
    br = new BufferedReader(new InputStreamReader(urlconnection.getInputStream(), "UTF-8" ));

    String result = "";
    String line;

    while((line = br.readLine()) != null) {
    result=result + line + "\n";
    }
    Log.d("information",result);


    }catch(Exception E){
    E.printStackTrace();
    }
    }


    이렇게 바꿔봤는데 프린트가 잘 안됩니다...
    코드 틀린 부분이 있을까요?

    제가 쓰려는 api의 End Point는 http://openapi.tago.go.kr/openapi/service/ 입니다.
    그리고 그 중 getSttnAcctoSpcifyRouteBusArvlPrearngeInfoList 이라는 항목을 쓰려고 합니다.

    요청메시지가 cityCode, nodeId, routeId 3개여서 글쓴이님이 올려주신 것 처럼 &이 구분자?로 연결했습니다. 이때 docx 문서 안에 있는 샘플데이터를 넣었습니다.

    그리고 글쓴이님이 올리신 요청/응답 메시지 예시가 제가 쓰려는 api 문서에는 없고 요청 메시지와 응답 메시지 2개만 있어서 글쓴이님처럼 요청 메시지와 샘플데이터를 같이 쓰는 게 맞나 의문이 듭니다.

    • 어떤 API를 쓰시는지는 알겠는데 문서를 볼 수 있게 링크가 있으면 도움을 드릴 수 있지 않을까합니다!

      우선 코드상에 보이는 문제는 ServiceKey가 이미 URL인코딩되었다는 것입니다.

      과거에 제가 실습할 때는 인코딩되지않은 ServiceKey를 발급해줬는데 요새는 인코딩까지 해서 발급해주기 때문에 헷갈리시는 분들이 간혹보입니다.

      ServiceKey값을 아래와같이하고 앞에 주소와 함께 붙여보도록해보세요!
      String serviceKey = URLDecoder.decode("이영주님의 서비스키");
      string urlStr = "http://~~" + ... + serviceKey;
      이렇게요!

  • 이영주 2020.06.03 10:36

    https://www.data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15000757

    공공데이터 포털에서 이 문서를 사용했습니다!

  • tvvmvn 2020.07.10 19:56

    정말 깔끔하게 정리된 글입니다. 감사합니다

  • ggg 2020.08.02 13:28

    혹시 불러온 데이터를 엑셀로 저장하는방법도 아시나요? 너무헷갈리네요 ㅠㅠ 좋은정보 감사합니다
    !

  • 2020.08.15 21:46

    비밀댓글입니다

  • 2020.11.15 15:27

    비밀댓글입니다

    • 맞습니다.
      정리하자면, 공공기관, 일반기업에서 수집한 여러 종류의 데이터(날씨, 지하철 노선, 버스 노선, 지도 정보등)가 있고, 그것을 공공재로 사용할 수 있도록 OPEN 해놓은 것이라고 보면 됩니다.
      그리고 API가 Application Programming Interface의 약잔데 Interface니까 앞서 OPEN한 데이터를 가져오는 '방식', '방법'이라고 이해하시면 될 것 같습니다.
      그것을 가지고 개발자들이 유용한 정보로 가공해서 앱이나 웹과 같은 하나의 프로그램으로 출시하는 것이지요.

  • 2020.11.15 21:01

    비밀댓글입니다

    • 저도 수익구조에 대해서 명확하게 답변드리기 어렵습니다만,
      OPEN API 트래픽(요청 횟수)이 보통 무제한은 아닙니다.
      그렇기 때문에 기업에서 상업용으로 트래픽당 이용료 같은 라이센스를 판매할 수도 있는 것이고요.
      간접적으로는 '카카오톡으로 공유하기', '유튜브로 내보내기' 이런 기능등을 예를 들면 플랫폼(카카오톡, 유튜브)을 반강제로 이용하게 유도할 수도 있고(해당 업체의 API 의존성을 갖기 때문), 나아가 이용자를 대상으로 한 수수료를 받을 수도 있지 않을까싶습니다.