어떻게 하면 잘 정리했다고 소문이 날까...

[요저개 4편] REST API 본문

요것저것 개발 지식쌓기😎/요저개 시리즈

[요저개 4편] REST API

정리왕이되자 2023. 7. 21. 11:33

👋🏻 Introduction

요저개 1편인 MSA(MicroService Architecture)과 연관이 깊은 기술인 REST(Representation State Transfer)에 대해 정리해보고자 합니다. REST가 어떤 기술인지 알아보고, 이를 Django에 어떻게 적용하면 좋은 지 정리해보겠습니다.

 

💡 Basic Knowledge

REST에 대해 알아보기 전에 아래 2개의 내용을 정리하고자 합니다.

 

1. URI와 URL의 차이

2. HTTP Method

1️⃣ URI와 URL의 차이

  • URI는 일종의 식별자이고 URL은 식별자 + 위치이다.
  • URL도 일종의 URI다.
  • URI는 추상적/물리적 리소스를 식별하기 위한 식별자로서의 정의에 초점이 맞춰져 있고, URL은 인터넷 환경에서 접근 가능한 문자열 형태의 표현에 초점이 맞춰져 있다.

2️⃣ HTTP Method

  • POST: 리소스 생성 요청.
  • GET: 리소스 조회하고 해당 도큐먼트에 대한 자세한 정보 요청.
  • PUT: 리소스 수정. 자원 전체를 갱신.
  • PATCH: 리소스 수정. 자원의 일부 갱신.
  • DELETE: 리소스 삭제.
  • HEAD: GET과 방식은 동일하지만, 응답에 BODY가 없고 응답 코드와 HEAD만 응답하는 메소드.
  • CONNECT: 클라이언트가 Proxy를 통해 Server와 SSL 통신을 하고자 할 때 사용.
  • TRACE: 원격 서버에 루프백 메세지를 호출하기 위한 테스트 용도로 사용하는 메소드.

🧐 REST란?

  • REpresentational State Transfer의 약자.
  • 웹의 장점을 최대한 활용할 수 있는 아키텍처가 REST.
  • 자원의 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것.

  • 즉, HTTP URI(Uniform Resource Identifier)를 통해 자원을 명시하고 HTTP Method(GET, POST, PUT, PATCH, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것.

 

🧐 구성 요소

  • 자원: HTTP URI
  • 자원에 대한 행위: HTTP Method
  • 자원에 대한 행위의 내용: HTTP Message Payload

🧐  특징

  • Client - Server 구조.
  • Stateless
    • 세션 정보나 쿠기 정보를 별도로 저장 및 관리하지 않고 API 서버는 단순히 들어오는 요청만 처리.
  • Cacheable
    • Last-modified 나 e-tag를 활용해 캐싱 구현.
  • Layered System
  • Uniform Interface
    • URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하려는 아키텍처 스타일.

 

🧐  장점

  • HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라 구축이 필요 없다.
  • HTTP 프로토콜의 표준을 최대한 활용하여 여러 추가적인 장점을 함께 가져갈 수 있게 한다.
  • HTTP 표준 프로토콜을 따르는 모든 플랫폼에서 사용 가능하다.
  • Hypermedia API의 기본을 충실히 지키며 범용성을 보장한다.
  • REST API 메세지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.
  • 여러가지 서비스 디자인에서 생길 수 있는 문제를 최소화한다.
  • 클라이언트와 서버의 역할을 분리한다.
  • 백엔드와 프론트엔드를 완전히 분리한다.

🧐  단점

  • 표준 자체가 존재하지 않아 정의가 필요하다.
  • HTTP Method가 제한적이다.
  • 브라우저를 통해 테스트할 일이 많은 서비스라면 쉽게 고칠 수 있는 URL보다 Header 정보의 값을 처리해야함으로 전문성이 요구된다.
  • 구형 브라우저에서 호환이 되지 않아 지원해주지 못하는 동작이 많다.

🧐  REST API 설계 규칙

  • URI는 동사보다 명사, 대문자보다 소문자를 사용.
  • 마지막에 슬래시를 포함하지 않는다.
  • 언더바 대신 하이픈을 사용한다.
  • 파일 확장자는 URI에 포함하지 않는다.
  • 행위를 포함하지 않는다.
  • 컬렉션은 복수형으로 도큐먼트는 단수형으로 표기한다.

✅  RESTful 하다?

  • REST 기법을 사용했다고 해서 모두가 RESTful한 것은 아니다.
  • REST API 설계의 규칙을 올바르게 지킨 시스템을 RESTful하다고 말할 수 있고, 모든 CRUD 기능을 POST로 처리하거나 URI 규칙을 제대로 지키지 않은 API는 RESTful하다고 할 수 없다.
  •