RestAPI

Doya·2025년 3월 24일

ESTSOFT_AI개발7기

목록 보기
27/43

REST

  • 2000년 로이 필딩(Roy Fielding)의 박사 논문에서 제안한 소프트웨어 아키텍처 스타일
  • 웹 기반 시스템(클라이언트-서버 구조)을 어떻게 설계할지를 정해주는 규칙
  • REST자체가 어떠한 기술, 프로토콜, 형식이 아닌 설계 철학중 하나임
  • 웹의 기본 원리를 그대로 따르면서, 리소스를 URL로 표현, HTTP 메서드 행위를 구분하는 설계 방식

RestAPI(REpresentational State Transfer)

  • Rest를 기반으로 만들어진 API
  • 클라이언트가 HTTP 프로토콜을 이용하여 서버의 리소스를 요청, 조작하는 방식

실습

url = 'https://api.github.com/repositories'
response = requests.get(url)

if response.status_code == 200:
    # 데이터를 json의 형태로 확인 
    data = response.json()
    for repo in data:
        node_id = repo.get('node_id')
        name = repo.get('name')
        owner_login = repo.get('owner').get('login')
        print(f"node_id : {node_id}, name : {name}, owner_login : {owner_login}")
else:
    print('API활용 실패', response.status_code)

  • urllib 사용 실습
request = urllib.request.Request(url)
response_urlib = urllib.request.urlopen(request)

if response_urlib.getcode() == 200:
    # 데이터를 json의 형태로 확인 
    data = json.loads(response_urlib.read().decode())
    for repo in data:
        node_id = repo.get('node_id')
        name = repo.get('name')
        owner_login = repo.get('owner').get('login')
        print(f"node_id : {node_id}, name : {name}, owner_login : {owner_login}")
else:
    print('API활용 실패', response.status_code)

HTTP 상태 코드

  • 1xx: 정보 응답
코드의미설명
100Continue요청이 계속 진행 중이며, 클라이언트는 요청을 계속 전송해야 함
  • 2XX: 성공
코드의미설명
200OK요청이 성공적으로 처리됨
201Created새로운 리소스가 성공적으로 생성됨 (POST 요청 등)
204No Content요청 성공, 하지만 반환할 데이터 없음 (예: DELETE 요청 후)
  • 3xx: 리다이렉션
코드의미설명
301Moved Permanently리소스가 영구적으로 다른 URL로 이동됨
302Found리소스가 임시로 다른 URL에 위치함
304Not Modified캐시된 리소스와 서버의 리소스가 동일, 새 데이터 필요 없음
  • 4xx: 클라이언트 오류
코드의미설명
400Bad Request요청 문법이 잘못되었거나 유효하지 않음
401Unauthorized인증 필요 (로그인 또는 토큰 등)
403Forbidden인증은 되었지만 권한이 없어 접근 불가
404Not Found요청한 리소스를 찾을 수 없음
405Method Not Allowed해당 리소스에서 지원하지 않는 HTTP 메서드 사용
  • 5xx: 서버 오류
코드의미설명
500Internal Server Error서버 내부 오류 (예상치 못한 문제)
502Bad Gateway게이트웨이 또는 프록시 서버에서 잘못된 응답 수신
503Service Unavailable서버가 과부하이거나 유지보수 중이라 요청 처리 불가
504Gateway Timeout게이트웨이가 응답 대기 시간 초과로 요청 실패
profile
안녕하세요. 도야입니다

0개의 댓글