API (2023.05.31)
[ 주요 개념]
API(Application Programming Interface)
: 프로그램들이 소통할 수 있는 인터페이스, 프로그램 간 소통, 조작방법, 매뉴얼 느낌
- 클라이언트 = 손님
- API = 메뉴
→ 실체 X, 문서 - API Server = 웨이터
→ Service server의 결과 전달, 없이 service server와 client가 직접 소통 가능, 늘리는 것도 가능하다 - Service Server = 요리사
→ 요청받은 서비스 구동, 처리
Why API ??
- 사용성 면에서 정제(가공)되어 있으므로 가져오기 용이하고 간편하다.
- 검증된 데이터로 스크레이핑을 통해 가져온 데이터보다 신뢰성이 있음
⇒ 웹에서 데이터를 수집할 때 API와 스크레이핑 모두 가능할 경우 API가 더 좋은 선택
API 종류
- DB API → DB와 파이썬 소통
- DB : 주는 역할
- 파이썬(프로그램) : 받는 역할
- WEB API → 서버와 클라이언트 소통
- 서버 : 주는 역할
- 클라이언트 : 받는 역할
API 응답
- API 입력 값과 결과 값에 제한된 형식 X
- csv, 문자열, json, xml 등 모두 사용가능
- Web API는 주로 JSON을 사용
JSON(Javascript Object Notation)
- 말 그대로 자바스크립트에서 Object 표기하는 방식
- 파이썬 Dictionary 형식과 비슷하게 생김
- 자바스크립트에 국한되지 않고 널리 쓰임 → 표준처럼 자리잡음
# 예시
{
"glossary":{
"title":"example glossary",
"GlossDiv":{
"title":"S",
"GlossList":{
"GlossEntry":{
"ID":"SGML",
"SortAs":"SGML",
"GlossTerm":"Standard Generalized Markup Language",
"Acronym":"SGML",
"Abbrev":"ISO 8879:1986",
"GlossDef":{
"para":"A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso":[
"GML",
"XML"
]
},
"GlossSee":"markup"
}
}
}
}
}
HTTP(HyperText Transfer Protocol)
- 인터넷에서 통신하기 위해 만든 약속, 규칙
- API는 정해진 규칙이 없어서 API를 사용할 때마다 어려움이 생겼고, 해결하기 위해 HTTP가 있음
HTTP Request
: 한 컴퓨터가 다른 컴퓨터에 리소스 요청
CRUD에 사용되는 HTTP 메서드
- Create : 새로운 데이터 생성 (ex. 새로운 회원 가입)
- Read : 데이터 조회 (ex. 회원 정보 조회)
- Update : 기존 데이터 수정 (ex. 회원 정보 수정)
- Delete : 기존 데이터 삭제 (ex. 회원 탈퇴)
HTTP Response
: 요청에 대한 응답
Status Code → HTTP 응답에 대한 상태
- 100번대 : 요청 처리 중
- 200번대 : 성공
- 300번대 : Redirection error(추가 동작 필요)
- 400번대 : Client error(내가 잘못)
- 500번대 : Server error(저쪽에서 잘못)
HTTP API
: HTTP를 지켜서 만든 API
Ex. Import pandas as pd 여기서 pd 가 아니어도 되는데 pd로 적는 느낌
HTTP 규약이 지켜지지 않으면 소통 비용이 증가!!
HTTP 규약을 더 잘 지키게 하기 위해 REST 가이드라인이 생김
REST(REpresentational State of Transfer)
분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 형식 중 하나
소프트웨어 아키텍처를 어떻게 형성할 지에 대한 가이드라인으로 6개의 가이드라인 존재
RESTful API
: REST의 6가지 가이드라인을 모두 지킨 API
REST API 요청 보낼 때 사용하는 메서드
- GET : 데이터 조회
- POST : 데이터 생성
- PATCH : 데이터 업데이트(일부변경)
- PUT : 데이터 업데이트(전체변경)
- DELETE : 데이터 삭제
→ 각 메서드의 기능이 제한된 것은 아니지만 이렇게 쓰기로 약속한 것! ( patch를 이용해서 데이터 전체를 변경하는 것도 가능)
POSTMAN
API 활용할 때 데이터를 요청하고 응답받는 GUI 기반의 플랫폼, 프로그램
직관적으로 볼 수 있어 편하게 이해할 수 있도록 해주는 프로그램 → 프런트앤드에 더 유용
실습
파이썬 호환성
몇몇 API 들은 파이썬을 위한 패키지만 그렇지 않은 경우들도 많다.
이럴 때에는 데이터를 받아와 파이썬에서 작업할 수 있는 형태로 변경해 주는 과정을 거쳐야 한다.
- OpenWeather API
import requests
import json
API_URL = '<https://api.openweathermap.org/data/2.5/weather?q=Seoul&appid={API_KEY}>'
raw_data = requests.get(API_URL)
parsed_data = json.loads(raw_data.text)
print(parsed_data)
- 공공데이터포털
# 가져온 Json 파일을 이용해서 3,999번째 데이터를 호출, xml 태그를 'bs4.element.Tag' 클래스로
API_KEY = '발급받은 API_KEY'
URL = request_url()
params ={'serviceKey' : API_KEY,
'type' : 'xml, json',
'pageNo' : '3999', #3,999번째 데이터
'numOfRows' : '1',
'centerNm' : '국립암센터',
'fromYear' : '2010',
'toYear' : '2019' }
response = requests.get(URL, params=params)
soup = BeautifulSoup(response.content, 'xml') #xml
result = soup.find('items')
'코드스테이츠 AI 부트캠프 > Section 4' 카테고리의 다른 글
Docker(도커) (0) | 2023.06.07 |
---|---|
NoSQL(Not Only SQL) (0) | 2023.06.02 |
Web Scraping (웹 스크레이핑) (0) | 2023.05.30 |
Python 활용(디버깅, 함수, 클래스, 데코레이터) (0) | 2023.05.30 |
DB API(DataBase Application Programming Interface) (1) | 2023.05.24 |
댓글