[2024.04.11] REST API (1)

체리마루·2024년 4월 11일

REST API

  • API (Application Programming Interface): 두 소프트웨어가 서로 통신할 수 있게 하는 메커니즘 => 클라이언트-서버처럼 서로 다른 프로그램에서 요청과 응답을 받을 수 있도록 만든 체계

  • REST (Representational State Transfer): API Server를 개발하기 위한 일종의 소프트웨어 설계 "방법론" => 모두가 API Server를 설계하는 구조가 다르니 이렇게 맞춰서 설계하는 게 어때? "규칙 X"

  • REST API: REST라는 설계 디자인 약속을 지켜 구현한 API

자원의 식별

  • URI (Uniform Resource Identifier; 통합 자원 식별자): 인터넷에서 리소스(자원)를 식별하는 문자열 => 가장 일반적인 URI는 웹 주소로 알려진 URL

  • URL (Uniform Resource Locator; 통합 자원 위치): 웹에서 주어진 리소스의 주소 => 네트워크 상에 리소스가 어디 있는지를 알려주기 위한 약속

  • Schema (or Protocol):
    브라우저가 리소스를 요청하는 데 사용해야 하는 규약
    URL의 첫 부분은 브라우저가 어떤 규약을 사용하는지를 나타냄
    기본적으로 웹은 http(s)를 요구하며 메일을 열기 위한 mailto:, 파일을 전송하기 위한 ftp: 등 다른 프로토콜도 존재

  • Domain Name:
    요청 중인 웹 서버를 나타냄
    어떤 웹 서버가 요구되는지를 가리키며, 직접 IP 주소를 사용하는 것도 가능하지만, 사람이 외우기 어렵기 때문에 주로 Domain Name으로 사용
    예를 들어 도메인 google.com의 IP 주소는 142.251.42.142

  • Port:
    웹 서버의 리소스에 접근하는데 사용되는 기술적인 문(Gate)
    HTTP 프로토콜의 표준 포트 (HTTP: 80, HTTPS: 443)
    표준 포트만 작성 시 생략 가능

  • Path:
    웹 서버의 리소스 경로
    초기에는 실제 파일이 위치한 물리적 위치를 나타냈지만, 오늘날은 실제 위치가 아닌 추상화된 형태의 구조를 표현
    예를 들어 /articles/create라는 주소가 실제 articles 폴더 안에 create 폴더 안을 나타내는 것은 아님

  • Parameters:
    웹 서버에 제공하는 추가적인 데이터
    '&' 기호로 구분되는 key-value 쌍 목록
    서버는 리소스를 응답하기 전에 이러한 파라미터를 사용하여 추가 작업을 수행할 수 있음

  • Anchor:
    일종의 북마크를 나타내며 브라우저에 해당 지점에 있는 콘텐츠를 표시
    fragment identifier(부분 식별자)라고 부르는 '#' 이후 부분은 서버에 전송되지 않음
    https://docs.djangoproject.com/2n/4.2/intro/install/#quick-install-guide 요청에서 #quick-install-guide는 서버에 전달되지 않고 브라우저에게 해당 지점으로 이동할 수 있도록 함

자원의 행위

  • HTTP Request Methods: 리소스에 대한 행위(수행하고자 하는 동작)를 정의 => HTTP verbs 라고도 함

  • HTTP response status codes: 특정 HTTP 요청이 성공적으로 완료되었는지 여부를 나타냄

자원의 표현





DRF with Single Model

DRF

  • DRF (Django REST framework): Django에서 Restful API 서버를 쉽게 구축할 수 있도록 도와주는 오픈소스 라이브러리




GET

  • Serialization (직렬화): 여러 시스템에서 활용하기 위해 데이터 구조나 객체 상태를 나중에 재구성할 수 있는 포맷으로 변환하는 과정 => 어떠한 언어나 환경에서도 나중에 다시 쉽게 사용할 수 있는 포맷으로 변환하는 과정



  • Serializer: Serialization을 진행하여 Serialized data를 반환해주는 클래스

  • ModelSerializer: Django 모델과 연결된 Serializer 클래스 => 일반 Serializer와 달리 사용자 입력 데이터를 받아 자동으로 모델 필드에 맞추어 Serialization을 진행







POST




DELETE


PUT




참고

profile
멋쟁이 토마토 개발자 🍅

0개의 댓글