: 프로그램들이 소통할 수 있는 인터페이스
API와 식당
클라이언트와 API
- 손님은 들어와서 메뉴판을 보고 웨이터에게 전달하고 웨이터는 요리사에게 전달한다 여기서 중요한 것은 메뉴판도 "문서"라는 것
- 손님이 직접 요리하는 것을 보지 않는 이유? 메뉴판으로 보고 어떤 음 식이 나올지 예상이 가기 때문에
💡 메뉴판 => 사전에 약속된 규칙들- API 실체는 없고 Return value로 실체를 확인할 수 있음
API Server
- 웨이터의 역할: 주문 받기 + 음식을 손님에게 전달하기 + 손님의 요청 처리하기
- 음식을 주문하거나 받기 위해서 웨이터를 거쳐야함
- 요청들을 처리해주는 역할-> 요청에 따라 어떻게 대응하는지 앎
💡 API Server 는 원하는 것을 전달이 아닌 Service Server 의 결과를 전달
Service Server
- Service Server는 클라이언트의 요청에 대한 대응할 수 있어야 함
- 요청을 처리에 요청이 성공했는지 실패했는지 혹은 다른 상태인지를 알려주는 것도 포함
- 클라이언트 요청을 서버에서 응답해야 함
: HyperText Transfer Protocol로 컴퓨터들의 통신 규약 중 하나
: 보통 한 컴퓨터가 다른 컴퓨터에 리소스 요청을 보낼 때 사용되는 말
HTTP 메소드
- GET : 특정 리소스를 달라고 할 때에 사용
- 예시: 페이지 로딩할 때
- POST : 서버 측의 특정 리소스를 저장할 때 사용
- 예시: 회원가입을 할 때에 특정 유저의 정보를 서버에 저장
- PUT/PATCH : 서버 측의 특정 리소스를 업데이트 할 때 사용
- PUT 은 데이터 전부를 바꿀 때 사용
- PATCH 는 부분적으로 변경할 때 사용
- 예시: 사용자 닉넴임 변경
- DELETE : 서버 측의 특정 리소스를 삭제할 때 사용
- 예시: 유저 탈퇴
다양한 메소드요청들을 특정 방법으로 사용하도록 정해진 것은 아니나 어느 HTTP메소드인지에 따라 제한이 있음
✅ API 를 제작할 때에는 보통 REST 가이드라인을 따라 제작됨
✅ API 는 보통 해당 REST 가이드라인을 따라 HTTP 메소드들이 사용
HTTP 규약에 따른 응답
상태 코드로 상태가 어떠한지 알려줌
- 100 번대 : 정보 응답
- 200 번대 : 성공 응답
- 300 번대 : 리다이렉션 메시지
- 400 번대 : 클라이언트 에러 응답
- 500 번대 : 서버 에러 응답
: 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍쳐의 한 형식
REST 아키텍처는 HTTP 를 사용할 때 특정 가이드라인들을 제시
REST API 를 작성 -> HTTP 메소드
해당 HTTP 메소드마다 통용되는 의미가 있다는 부분을 참고
GET 요청 예시
1. HTTP GET http://www.appdomain.com/users
2. HTTP GET http://www.appdomain.com/users?size=20&page=5
3. HTTP GET http://www.appdomain.com/users/123
4. HTTP GET http://www.appdomain.com/users/123/address
대표적인 상태 코드
데이터를 받아와 파이썬에서 작업할 수 있는 형태로 변경해주는 과정
import requests
import json
API_URL = 'https://api.openweathermap.org/data/2.5/weather?q=Seoul&appid=b7eea967'
raw_data = requests.get(API_URL)
parsed_data = json.loads(raw_data.text)
print(parsed_data)
https://api.openweathermap.org/data/2.5/weather?q=Seoul&appid=b7eea967
Seoul=> 서울의 날씨 정보를 받겠다
b7eea967 => APP KEY