이번 포스팅은 API에 대해 정리하려 합니다. API는 개념 자체가 추상적이기 때문에 구체적인 work flow를 구현하기는 어렵지만, API로 받은 데이터를 DB에 저장하는 것까지 정리해보겠습니다.
1. API
- API는 서로 다른 프로그램이 소통할 수 있도록 하는 일종의 약속이자 체계입니다.
- 클라이언트가 서버에 무언가를 요청하면 클라이언트의 요청을 서버가 해석할 수 있어야 합니다.
- 서버가 클라이언트의 요청을 해석할 수 있도록 사전에 약속한 체계가 API입니다.
- 이 API에 따라 클라이언트와 서버는 서로 필요한 데이터를 주고 받을 수 있으며, 데이터 수정, 삭제 등의 CRUD를 수행할 수도 있습니다.
- 우리가 서버에 특정 데이터를 요청하면 우리는 json 형태의 데이터를 받을 확률이 높습니다.
2. HTTP
- 앞서 설명한 API는 아주 넓은 개념입니다. 서로 다른 두 객체가 소통할 수 있는 인터페이스라면 모두 API라고 부를 수 있습니다.
- 범위를 조금 좁혀서, 우리가 주로 데이터를 얻는 웹에서 사용할 API를 web API라고 합니다.
- 그리고 web API를 서로 일정한 약속에 따라 사용하자고 만든 가이드라인이 HTTP(HyperText Transfer Protocl)입니다. 하나의 컴퓨터(클라이언트)가 다른 컴퓨터(서버)와 소통할 때 정해진 규칙과 틀에 따라 소통할 수 있도록 정한 가이드라인입니다.
3. REST API
- REST는 HTTP로 소통할 때 더 세분화된 가이드라인을 제시합니다.
- HTTP의 메소드(API)를 REST의 기준에 따라 만들면 REST(ful) API라고 부릅니다.
- 즉, API가 REST의 가이드라인을 모두 따르면 RESTful API라고 부르고, API가 REST 가이드라인을 일부 따르면 REST API라고 부릅니다.

- 보통, API를 제공하는 web에서는 API 사용법을 안내합니다.
- 개발자 입장에서는 자신만 알아볼 수 있도록 API를 만들면 편하겠지만, 사용자 입장에서는 API를 사용할 때마다 개발자가 만든 사용 규칙을 찾아야하는 번거로움이 생깁니다.
- 이런 번거로움을 줄이고, 웹 API의 질서를 세우려는 시도에서 REST 아키텍처가 등장했습니다.
- 보통 REST API를 작성했다고 하면, HTTP 메소드를 다음과 같이 사용합니다.
- GET : 데이터 조회
- POST : 데이터 생성
- PATCH : 데이터 일부 업데이트
- PUT : 데이터 전체 업데이트
- DELETE : 데이터 삭제
4. API로 데이터 얻기
- API로 데이터를 얻기 위해서는 key가 필요합니다.
- 공개된 형태의 API도 많지만, ID와 PW를 이용하거나, OAuth, 공개 키 암호화 방식을 이용하기도 합니다.
- 이번 포스팅에서는 공개된 형태의 API를 이용하겠습니다.
import requests
data = ''
response = requests.get("https://api.github.com/users/octokit/repos")
if response.status_code == 200:
data = response.json()
- 파싱한 데이터를 MongoDB에 INSERT 하겠습니다.
!pip install pymongo
!pip install dnspython
from pymongo import MongoClient
client = MogoClient({MONGO_URI})
database = client[{DATABASE_NAME}]
collection = database[{COLLECTION_NAME}]
collection.insert_one({data})
collection.insert_many({datas})
- 이렇게 API, HTTP, REST API 순으로 API에 대해 정리해봤습니다.
- 모든 건 필요해서 만들어졌다는 관점에서 API는 프로그램 간의 소통을 위해, HTTP는 웹 소통을 위해, REST API는 일관성 있고 질서 있는 소통을 위해 만들어졌다고 이해할 수 있을 것 같습니다.
다음 포스팅에서는 MongoDB와 같은 NOsql에 대해 정리해보도록 하겠습니다.