본문 바로가기
프레임워크/Django

[Django] REST API

by Ssubini 2022. 4. 22.

HTTP

  • HTTP(Hyper Text Transfer Protocol)
    • 웹 상에서 컨텐츠를 전송하기 위한 약속
    • 웹에서 이루어지는 모든 데이터 교환의 시초
      • 요청(request) - 클라이언트에 의해 전송되는 메시지
      • 응답(response) - 서버에서 응답으로 전송되는 메시지
    • 기본 특성 : Stateless/ Connectionless (계속 왔다갔다하는게 아니라 요청이 들어올때 응답을 하는 구조)
    • 쿠키와 세션 통해 서버 상태를 요청과 연결
  • HTTP response status codes
    • 요청 예시

    • 응답 예시

  • HTTP request methods
    • 자원에 대한 행위(수행하고자 하는 동작)을 정의
    • 주어진 리소스(자원)에 수행하길 원하는 행동을 나타냄
    • ex> GET, POST, PUT, DELETE
  • URL, URN
    • URL (Uniform Resource Locator)
      • 통합 자원 위치
      • 네트워크 상에 자원이 어디있는지 알려주기 위한 약속
      • 추상화된 의미론적이 구성
      • 웹 주소 / 링크
    • URN (Uniform Resource Name)
      • 통합 자원 이름
      • URL과 달리 자원의 위치에 영향을 받지 않는 유일한 이름의 역할
      • ex > IBSN(국제표준도서번호)
  • URI (Uniform Resource Identifiier)
    • URI
      • 통합 자원 식별자
      • 인터넷의 자원을 식별하는 유일한 주소(정보의 자원을 표현)
      • 인터넷에서 자원을 식별하거나 이름을 지정하는데 사용되는 간단한 문자열
      • 하위개념 : URL, URN

RESTful API

  • API (Application Programming Interface)
    • 프로그래밍 언어가 제공하는 기능을 수행할 수 있게 만든 인터페이스
      • CLI - 명령줄, GUI - 그래픽(아이콘), API - 프로그래밍
    • Web API
      • 웹 애플리케이션 개발에서 다른 서비스에 요청을 보내고 응답을 받기 위해 정의된 명세
    • 응답 데이터 타입 - HTML, XML, JSON
  • REST(REpresentational State Transfer)
    • REST의 자원과 주소의 지정 방법
      1. 자원(정보) - URI
      2. (자원에대한)행위 - HTTP Method (GET, POST, PUT, DELETE)
      3. 표현 - JSON으로 표현된 데이터를 제공
  • JSON(JavaScript Object Notation)
  • RESTful API
    • REST 원리를 따라 설계한 API
    • 프로그래밍을 통해 클라이언트의 요청에 JSON을 응답하는 서버를 구성

Response

  • Serialization (직렬화)
    • 데이터 구조나 객체 상태를 동일하거나 다른 컴퓨터 환경에 저장하고, 나중에 재구성할 수 있는 포맷으로 변환하는 과정
  • Django REST Framework (DRF)
    • Web API 구축을 위한 Toolkit을 제공하는 라이브러리

댓글