파이썬/파이썬(python) 중급

[33-1 파이썬] API, JSON, Request, Response code, status_code, raise_for_status, endpoint, url, JSON viewer Awesome

Olivia-BlackCherry 2022. 9. 25. 22:25

Application Programming Interface

API란?

명령, 함수, 프로토컬, 객체로 이루어져있다.

프로그래머들은 API를 이용해 소프트웨어를 생성하거나,

다양한 웹사이트에서 그들이 제공하는 데이터를 요청(request)하고, 받는(response)다.

An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software.(위키피디아)

My Program
나의 프로그램
Request   >>>>  External System
외부 시스템 ex)웹사이트
API
<<<<    Response

 

API를 식당의 메뉴판이라 생각해보자.

내가 식당에 가서 메뉴판을 보고 음식을 주문하려고 한다.

메뉴판에 없는 메뉴는 주문할 수 없다.

마찬가지로 프로그래머 역시

해당 웹사이트의 API가 줄 수 있는 정보만 요청(request)해야 한다. 

 

또한 주문하는 방식은 식당이 정한 규칙을 따라야 한다.

식당 마다 POS기로 주문해야 하는 경우, 말로 주문해야 하는 경우, 온라인 주문만 해야하는 경우 등

그들 만의 규칙이 있다.

마찬가지로 프로그래머 역시

해당 API가 요청하는 규칙에 따라 정보를 요청(request)해야

제대로 응답(response)받을 수 있다.

 

 

 

API Request

API를 요청하는 것

requests.get(url=" ")

import requests

response = requests.get(url="http://api.open-notify.org/iss-now.json")
print(response)

 

 

Response Codes

1XX Hold on 잠시만요
2XX Here You Go 성공!
3XX Go Away 권한이 없어요
4XX You Screwed Up 여러분이 잘못했어요
5XX I Screwed up 서버가 잘못됐어요

 

 

status_code

반응으로 오는 글자 중, response code 즉 숫자만 받는다.

import requests

response = requests.get(url="http://api.open-notify.org/iss-now.json")
print(response.status_code)

 

 

raise_for_status()

request모듈의 메소드로,

에러가 있을 때 raise HTTP Error를 생성한다.

import requests

response = requests.get(url="http://api.open-notify.org/iss-now.json")
response.raise_for_status()

 

Endpoint 엔드포인트 = URL

데이터를 찾을 수 있는 위치

 

 

JSON

인터넷을 통해 데이터를 전송하는 거의 표준 방식

미니멀, 공백, 기호가 많이 없고, 직관적이고, 빠르다.

 

 

JSON Viewer Awesome

JSON 파일을 트리 구조로 보기 쉽게 시각해놓은 앱

크롬에서 바로 다운로드 받을 수 있다.

https://chrome.google.com/webstore/detail/json-viewer-pro/eifflpmocdbdmepbjaopkkhbfmdgijcc/related?hl=ko 

 

JSON Viewer Pro

A completely free extension to visualise JSON response in awesome Tree and Chart view with great user experience and options. ✅…

chrome.google.com

 

 

json형태로 response를 받는다.

json은 딕셔너리 형태이기 때문에

[ ]  메소드를 이용하여 세부 속성에 접근한다.

data = response.json()
print(data)

>>{'iss_position': {'longitude': '-47.1223', 'latitude': '-40.2678'}, 'timestamp': 1664111992, 'message': 'success'}

 

 

import requests

response = requests.get(url="http://api.open-notify.org/iss-now.json")
response.raise_for_status()

data = response.json()
print(data)

longitude = data['iss_position']['longitude']
latitude = data['iss_position']['latitude']

position = (longitude, latitude)
print(position)

>>('-37.9146', '-33.9839')