막막한 2023. 5. 31. 14:28

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)