DAY 43 [N323]

마친자·2021년 10월 15일
0

API


: 프로그램들이 소통할 수 있는 인터페이스

  • 어떤 프로그램을 다룰 수 있는 조작 방법이나 메뉴얼과 비슷함
  • 기존에 존재하는 프로그램과 어떻게 소통할 수 있는지 알려주는 인터페이스

API와 식당

이미지 출처

클라이언트와 API

  • 손님은 들어와서 메뉴판을 보고 웨이터에게 전달하고 웨이터는 요리사에게 전달한다 여기서 중요한 것은 메뉴판도 "문서"라는 것
  • 손님이 직접 요리하는 것을 보지 않는 이유? 메뉴판으로 보고 어떤 음 식이 나올지 예상이 가기 때문에
    💡 메뉴판 => 사전에 약속된 규칙들
  • API 실체는 없고 Return value로 실체를 확인할 수 있음

API Server

  • 웨이터의 역할: 주문 받기 + 음식을 손님에게 전달하기 + 손님의 요청 처리하기
    • 음식을 주문하거나 받기 위해서 웨이터를 거쳐야함
    • 요청들을 처리해주는 역할-> 요청에 따라 어떻게 대응하는지 앎

💡 API Server 는 원하는 것을 전달이 아닌 Service Server 의 결과를 전달

Service Server

  • Service Server는 클라이언트의 요청에 대한 대응할 수 있어야 함
    • 요청을 처리에 요청이 성공했는지 실패했는지 혹은 다른 상태인지를 알려주는 것도 포함
    • 클라이언트 요청을 서버에서 응답해야 함

API 응답

  • 정해진 형식은 없으나 보통 json형식
    • json (Javascript Object Notation): 자바스크립트에서 Object를 표기

HTTP API


HTTP 란?

: HyperText Transfer Protocol로 컴퓨터들의 통신 규약 중 하나

  • 사람이 다른 사람과 소통을 하기 위해서는 정해진 소통방법 (예를 들어 언 하나의 컴퓨터가 다른 컴퓨터와 소통을 하고 싶을 때에 (파일을 받거나 전달하거나 등) 정해진 규칙과 틀을 준수해야 원활한 소통함
    • 정해진 규칙들을 하나의 규약 (protocol)이라고 부름
  • 요청 (HTTP Request), 응답 (HTTP Response)

HTTP Request

: 보통 한 컴퓨터가 다른 컴퓨터에 리소스 요청을 보낼 때 사용되는 말

  • 요청보내는 컴퓨터(클라이언트), 요청을 받는 컴퓨터(서버)

HTTP 메소드

  • GET : 특정 리소스를 달라고 할 때에 사용
    • 예시: 페이지 로딩할 때
  • POST : 서버 측의 특정 리소스를 저장할 때 사용
    • 예시: 회원가입을 할 때에 특정 유저의 정보를 서버에 저장
  • PUT/PATCH : 서버 측의 특정 리소스를 업데이트 할 때 사용
    • PUT 은 데이터 전부를 바꿀 때 사용
    • PATCH 는 부분적으로 변경할 때 사용
    • 예시: 사용자 닉넴임 변경
  • DELETE : 서버 측의 특정 리소스를 삭제할 때 사용

요청들을 특정 방법으로 사용하도록 정해진 것은 아니나 어느 HTTP메소드인지에 따라 제한이 있음

✅ API 를 제작할 때에는 보통 REST 가이드라인을 따라 제작됨
✅ API 는 보통 해당 REST 가이드라인을 따라 HTTP 메소드들이 사용

HTTP Response

HTTP 규약에 따른 응답
상태 코드로 상태가 어떠한지 알려줌

  • 100 번대 : 정보 응답
  • 200 번대 : 성공 응답
  • 300 번대 : 리다이렉션 메시지
  • 400 번대 : 클라이언트 에러 응답
  • 500 번대 : 서버 에러 응답

HTTP 예시

  • 'Request URL' : 누가 요청을 하고 있는지를 담고 있음
  • 'Request Method': 리소스를 가져온다는 뜻인 메소드를 사용
  • 'Status Code' : 200 은 'OK', 성공했다는 뜻
    • 여기에서는 GET 요청이 성공적이었다는 뜻
  • 'Remote Address' : 어느 리모트 서버에 요청을 하고 있는지 알려줌
    • 현재는 157.245.183.96 의 443 포트에 요청을 보내고 있음
  • 'Referrer Policy' : 요청을 보내는 곳이 당사자인지, 타 웹사이트에서 연결된 건지 등 알려줌
    • 현재는 'no-referrer' 로 현 웹사이트에서 보내고 있습니다.

REST API


REpresentational State of Transfer

: 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍쳐의 한 형식

  • 소프트웨어의 아키텍쳐를 어떻게 형성할 지에 대한 가이드라인(6개)
  • RESTful API :REST 의 가이드라인들은 다 따르면 해당 API

REST 와 HTTP

HTTP Request

  • REST 아키텍처는 HTTP 를 사용할 때 특정 가이드라인들을 제시

    • 모든 API가 다 따라 할 필요는 없다
  • REST API 를 작성 -> HTTP 메소드

    • GET : 데이터를 조회
    • POST : 데이터를 생성
    • PATCH : 데이터를 업데이트 (일부 변경)
    • PUT : 데이터를 업데이트 (전체 변경)
    • DELETE : 데이터 삭제

해당 HTTP 메소드마다 통용되는 의미가 있다는 부분을 참고

REST API 활용 예시 - GET

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

  • 1번 같은 경우에는 /users 로 끝나고 서버에 기록된 유저들을 가져올 거라고 예상
  • 2번 같은 경우에는 마찬가지로 유저를 가지고 오지만 추가 쿼리 파라미터 (? 뒤에 오는 항목들)를 통해 페이지와 개수를 정해주고 있음
  • 3번 같은 경우에는 유저를 가지고 오지만 유저 목록 중에서 123 에 일치하는 유저를 가지고 올 거라는 예상
  • 4번 같은 경우에는 3번의 유저 정보에서 address 정보만 가지고 올 거라는 예상

HTTP Response

대표적인 상태 코드

  • 200 (OK)
  • 201 (Created)
  • 202 (Accepted)
  • 204 (No Content)
  • 301 (Moved Permanently)

API 정보 제공 받기

데이터를 받아와 파이썬에서 작업할 수 있는 형태로 변경해주는 과정

  • 예시)무료로 날씨에 대한 정보 제공
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

  • APP KEY를 받아야 정보를 제공받을 수 있음
    검색을 통해서 APP KEY를 받을 수 있을 것openweather API key
  • APP KEY를 받아도 바로는 안되고 몇 분 지내야 가능함 참고

N323

트위터 API키 신청

트위터와 연결 및 타임라인 가져오기

profile
마루에 미친자

0개의 댓글