API
api
application programming interface
프로그램들이 소통할 수 있는 인터페이스
오늘 배우는 것은 web api
API Server
손님, 클라이언트 요청을 하는 사람과 용청을 할 수 있도록 중간다리 역할을 해주는 역
service server
요청 처리, 요청받은 서비스 구동
API 응답
보통접하는 응답은 JSON형식
-API 입력값 결과값 제한된 형식 없음
- CSV, 문자열, JSON, XML 모두 가능
- WEB API는 JSON 형식
JSON
하나의 프로그래밍 언어
자바스크립트에서 OBJECT 표기
{
"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"
}
}
}
}
}
^ JSON 예시 - 파이썬 딕셔너리처럼 키-값으로 묶인 구조
api가 스크래핑에 비해 , 정확한 자료를 정제된 자료의 형식으로 주는 느낌
HTTP
하나의 컴퓨터와 다른 컴퓨터 소통할 때 규칙
CLient <-----> server / http request, http response
http request
한 컴퓨터가 다른 컴퓨터에 리소스 요청 보낼 때 사용
클라이언트 vs.서버
클라이언트- 요청하는 컴퓨터
서버 - 요청 받는 컴퓨터
db랑 파이썬과 대화 소통
api도 동일하다
crud 기억하기
crud 에 사용되는 http 메소드
-get : 특정 리소스 달라고 할때 사용 - 페이지 로딩
-post : 클라이언트에서 서버 측에 많은 정보 전달할 때 사용 - 회원가입, 특정 유저 정보 서버 저장
-put/patch : 서버 측 특정 리소스 업데이트 할 때 사용 , put은 데이터 전부 바꿈 patch 부분 변경시 사용
-delete : 서버 측의 특정 리소스 삭제 - 유저 탈퇴
http response
http 규약에 따른 응답 받기
http 상태 코드들의 분류
100번대 - 정보 응답
200번대 - 성공 응답
300번대 - 리다이렉션 메세지
400번대 - 클라이언트 에러 응답
500번대 - 서버 에러 응답
http 예시
웹 페이지 열어 개발자 도구 연 뒤에 네트워크 탭으루 들어가면 http 요청과 응답 볼 수 있다
RESET API
웹 어플리케이션은 API를 제공해야한다
REpresentational State of Transfer
rest 기반 api
REST & HTTP
가이드 없는 HTTP Request
rest 아키텍처는 http 사용할 때 특정 가이드라인 제시
각 api 활용법이 다르고 사용할 때마다 개별적으로 알고 있어야 한다
get - 데이터 조회
post - 데이터 생성
patch - 데이터 업데이트/ 일부 변경
put- 데이터 없데이트/ 전체 변경
delete- 데이터 삭제
rest api get 예시
get 요청은 rest에서 정보나 리소스 가지고 올 때 사용
서버에 기록된 데이터나 리소스 변경할 때 사용해서는 안된다
변경을 하지 않고 가져만 오는 역할이라 안전한 메소드이다
요청 예시
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
http://www.appdomain.com/users?page=5&size=20
www.appdomain.com
보시면 주소만 봐도 어떤 리소스를 가져올 수 있는지 파악할 수 있습니다.
- 1번 같은 경우에는 /users 로 끝나고 서버에 기록된 유저들을 가져올 거라고 예상할 수 있습니다.
- 2번 같은 경우에는 마찬가지로 유저를 가지고 오지만 추가 쿼리 파라미터 (? 뒤에 오는 항목들)를 통해 페이지와 개수를 정해주고 있습니다.
- 3번 같은 경우에는 유저를 가지고 오지만 유저 목록 중에서 123 에 일치하는 유저를 가지고 올 거라는 예상을 할 수 있습니다.
- 4번 같은 경우에는 3번의 유저 정보에서 address 정보만 가지고 올 거라는 예상을 할 수 있습니다.
이처럼 GET 요청은 특정 리소스를 가지고 올 때 사용이 되고 기존 정보를 변경하거나 하는 작업을 하지 않습니다.
http response
- 200 (OK)
- 201 (Created)
- 202 (Accepted)
- 204 (No Content)
- 301 (Moved Permanently)
파이썬 호환성
# 날씨정보 가져오기
import requests
import json
API_URL = 'https://api.openweathermap.org/data/2.5/weather?q=Seoul&appid=3b8fb7eea967548d8cb2837639e4ca9e'
raw_data = requests.get(API_URL)
parsed_data =fson.lads(raw_data.text)
print(parsed_data)