DATA COLLECTION #API

codataffee·2024년 7월 16일
0

DATA

목록 보기
14/22
post-thumbnail

개요

데이터 수집에 관한 API 통신 학습


📌 API 통신의 개념


📌 개념

  • API : Application Programming Interface 의 약자
    소프트웨어 구성 요소가 서로 통신할 수 있게 하는 방식 (메커니즘)

    • 프로그램과 프로그램을 연결시켜주는 통신의 방법
  • API 통신은 payload KEY 값 (통신키)을 기반으로 간단한 호출 구문을 통해
    데이터를 송신받을 수 있다.


📌 역할 및 특징

  • 권한 관리

    • 많은 데이터가 적재되는 DB 에 누구나 접근하게 되면 보안상 문제가 있을 수 있다.
      API는 이를 방지하기 위해 접근이 허용된 로컬에게만 권한을 부여하는
      중간관리자 역할을 수행
      한다.
  • 프로그램 간 원활한 통신 지원

    • API는 키값을 통해 간편한 통신을 지원한다.
      해당 키값에는 할당량(호출량)이 부여되고, 경우에 따라 할당량을 초과하는 경우
      과금이 될 수 있다.
  • 접속 표준화

    • DB에 접근하는 요청을 표준화해준다. (규칙을 정해준다.)
      • 예시 )
        1번과 2번 서버에서 매출데이터 최근 1년치 조회
        1, 2 서버 매출 2023 - 07 ~ 2024 - 07 데이터 조회
    • 위 두문장은 같은 데이터를 의미하지만 규칙성이 없어 처리에 어려움이 있다.
    • 데이터 API 접근 시 규칙을 정해두게 되고, API 표준화 라고 한다.

📌 종류

  • API 통신의 종류
    • PUBLIC API : 누구나 사용가능한 공개 API
    • PRIVATE API : 사내(회사) 에서 사용하는 API
    • PARTNER API : 미리 정해둔 사용자들끼리 쓰는 API
    • WINDOW API : 운영체제 대상 API

📌 데이터 포맷

  • API 통신으로 보게 될 데이터의 형식 2가지
  1. JASON
  • 목적 : 사람과 기계 모두 쉽게 읽고 작성할 수 있는 데이터 교환 형식

  • 기반 : JavaScript의 객체 표기법에서 유래했지만, 언어 독립적으로 사용 가능

  • 데이터 구조:

    • 객체(Object): 중괄호 {}로 둘러싸인 키-값 쌍의 모음
    {
      "name": "John",
      "age": 30,
      "city": "New York"
    }
    • 키(Key) : 문자열 형태, 큰따옴표 (" ")로 감싸야 함
    • 값(Value) : 문자열, 숫자, 객체, 배열, true, false, null 가능
  • 문법 규칙:

    • 문자열은 반드시 큰따옴표로 감싸야 함
    • 키-값 쌍은 콜론 :으로 구분
    • 각 키-값 쌍은 쉼표 ,로 구분
    • 마지막 키-값 쌍 뒤에는 쉼표를 사용하지 않음

  1. XML
  • 목적 : 구조화된 데이터를 저장하고 전송하기 위한 마크업 언어

  • 기반 : SGML (Standard Generalized Markup Language)에서 파생

  • 데이터 구조 :

    • 요소(Element) : 시작 태그와 종료 태그로 둘러싸인 데이터, 속성을 가질 수 있음

      #예시
      <person>
      <name>John</name>
      <age>30</age>
      <city>New York</city>
      </person>
    • 속성(Attribute) : 태그 내에 포함된 키-값 쌍

      #예시
      <person name="John" age="30" city="New York" />
    • 중첩(Nesting): 요소는 다른 요소를 포함할 수 있음.

      #예시
      <family>
       <parent>
         <name>Jane</name>
         <age>40</age>
       </parent>
       <child>
         <name>Tom</name>
         <age>10</age>
       </child>
      </family>
  • 문법 규칙:

    • XML 문서는 단일 루트 요소를 가져야 함
    • 시작 태그와 종료 태그가 일치해야 함
    • 대소문자를 구분함
    • 속성 값은 큰따옴표 (" ")로 감싸야 함
    • 특수 문자는 엔티티 참조로 대체해야 함 (예 : <는 <, >는 >)

📌 API 통신의 원리


📌 PROTOCOL

  • 프로토콜(PROTOCOL) : 메세지를 주고 받는 양식과 규칙의 체계, 통신 규약

  • 프로토콜 종류

    계층프로토콜
    응용(Application)HTTP, SMTP, FTP, Telnet
    표현(Presentation)ASCII, MPEG, JPEG, MIDI
    전송(Transport)TCP, UDP, SPX
    네트워크(Network)IP, IPX
    데이터 링크(Data Link)Ethernet, Token Ring, FDDI, Apple Talk
  • 인터넷에서는 TCP 와 IP 라는 프로토콜이 표준으로 사용

    • IP 프로토콜
      • 데이터 전송 절차와 방법을 정의
      • 한 컴퓨터에서 다른 컴퓨터로 데이터를 전송
    • TCP 프로토콜
      • 데이터 흐름 제어 및 정확한 데이터 도착 보장
      • 네트워크 혼잡도 고려
    • HTTP 프로토콜
      • 웹 브라우저가 웹 사이트에 접속할 때 따르는 규약
      • 인터넷에서 데이터 전송을 위한 기본적인 프로토콜은 TCP와 IP 프로토콜
  • 프로토콜 주요 기능

    • 단편화: 긴 데이터 블록을 크기가 동일한 작은 블록으로 나누어 전송
    • 재합성: 수신 측에서 작은 데이터 블록을 원래의 메시지로 복원
    • 캡슐화: 데이터 블록에 정보를 추가하여 각 프로토콜에 적합한 형태로 만드는 기능

📌 HTTP API 통신

  • HTTP (Hyper Text Transfer Protocol) : 웹 환경에서 정보를 주고 받기 위한 프로토콜

  • HTTP API : HTTP를 이용해 프로그램끼리 소통하는 API

    • HTTP를 사용해서 서로 정해둔 규격으로 데이터를 주고 받으며 통신


📌 REST API 통신

  • REST : HTTP를 효과적으로 활용하기 위한 원칙

  • REST API : REST 원칙을 준수하여 만든 API

  • 역사 : 2000년 로이 필딩(Roy Fielding)의 박사학위 논문에서 최초로 소개
    HTTP 설계의 우수성을 활용하기 위한 아키텍처로 REST를 발표

    • 네트워크 아키텍처 스타일 : 네트워크 자원을 정의하고 처리하는 방법 제시
  • 특징 : REST API는 HTTP 통신 프로토콜을 따르면서 아래 4가지 추가 규약을 준수함

    • 리소스 식별: URI(Uniform Resource Identifier)를 사용하여 리소스 식별

    • 메시지를 통한 리소스 조작: HTTP 메서드(POST, GET, PUT, DELETE)를 사용하여 조작

    • 자기서술적 메시지: HTTP 메시지가 충분한 정보를 포함하여 클라이언트가 서버의 기능을 이해할 수 있도록 함

    • 애플리케이션 상태 전이 엔진(HATEOAS, Hypermedia As The Engine Of Application State): 클라이언트가 동적으로 서버가 제공하는 링크를 통해 애플리케이션의 상태를 전이


📌 API 통신 제반사항


  • API 통신을 통해 데이터를 제공하는 주요 사이트

    • 다양한 기업들이 API를 통해 데이터를 제공하여 서비스의 영향력을 확대하고 있다.
      이러한 데이터는 고객 정보나 매출과 같은 민감한 정보를 제외한 내용으로,
      다른 서비스와의 통합 및 분석에 유용하게 사용될 수 있다.
  • 주요 API 제공 사이트 목록

    • 공공데이터포털
      대한민국 정부가 제공하는 공공 데이터 API
      다양한 분야의 공공 데이터를 제공

    • 카카오 API
      카카오톡, 카카오맵, 카카오스토리 등의 카카오 서비스 데이터 제공
      로그인, 메시지 전송, 지도 데이터 등 다양한 기능을 API로 제공

    • 네이버 API
      네이버의 검색, 블로그, 카페, 쇼핑, 지도 등 다양한 서비스 데이터를 제공
      로그인, 검색, 번역, 음성 인식 등 다양한 API를 통해 서비스 연동 가능

    • 구글 API
      구글의 검색, 지도, 유튜브, 애널리틱스 등의 서비스 데이터를 제공
      Google Maps, YouTube Data, Google Analytics 등의 API를 통해 다양한 데이터와 기능을 이용할 수 있음

    • Riot API
      리그 오브 레전드와 같은 게임 데이터 제공
      게임 통계, 플레이어 정보, 매치 데이터 등을 API로 제공하여 게임 애플리케이션 개발에 활용

    • 한국은행 API
      한국은행에서 제공하는 경제 및 금융 데이터 API
      경제지표, 통계 데이터 등을 제공하여 경제 연구 및 분석에 활용 가능


📌 PYTHON 실습


📌 REQUEST LIBRARY

  • REST API를 사용하기 위해 파이썬에서 requests 라이브러리를 사용

    • requests 라이브러리는 파이썬으로 HTTP 호출 시 가장 많이 사용된다.
  • 주요 함수 4가지

    • GET : 요청, 값 가져오기 (주로 사용하는 함수)

    • POST : 생성, 액션

    • PUT : 수정, 덮어 씌우기

    • DELETE : 삭제


  • 라이브러리 설치 및 불러오기

# 라이브러리 설치 
!pip install requests
# 라이브러리 불러오기
import requests
import pprint
import json
import pandas as pd

📌 공공데이터 API


  • 데이터 URL 입력 : (인증키) 부분에는 개인 KEY 값을 넣으면 된다.

# 서울시 열린광장에서 복사해온 KEY 값과 URL 기입
# url 중 xml 부분을 json 으로 변경 
# 'http://openapi.seoul.go.kr:8088/(인증키)/xml/GetParkInfo/1/5/'
url = 'http://openapi.seoul.go.kr:8088/(인증키)/json/GetParkInfo/1/5/'

  • JSON FILE 불러오기

# request library 를 이용한 json file 로드 
response = requests.get(url).json()

  • JSON 데이터 확인

# json 데이터 확인 
response

  • JSON FILE 데이터의 KEY 값 확인

# json file 의 key 값 확인 (각 딕셔너리 값으로 이뤄져있음)
response['GetParkInfo'].keys()

  • JSON FILE 데이터의 ROW 데이터 불러오기

# json 파일의 row 데이터 로드 
response['GetParkInfo']['row']

  • JSON FILE 형식을 DATAFRAME 으로 받기

# json file 형식을 dataframe 으로 받아주기
raw1 = pd.DataFrame(response['GetParkInfo']['row'])
raw1.head()

  • 데이터 확인


말로만 듣고 검색만 해보고 그렇구나 하고 말았던 API 연동을
쉽게 이해할 수 있게 가르쳐 주신 튜터님께 감사 !

OPEN API만 보이면 다 연결해서 가져오고 싶어질 것 같다 : )


profile
커피 좋아하는 데이터 꿈나무

0개의 댓글

관련 채용 정보