Notice
Recent Posts
Recent Comments
Link
어떻게 하면 잘 정리했다고 소문이 날까...
[요저개 4편] REST API 본문
👋🏻 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하다고 할 수 없다.
'요것저것 개발 지식쌓기😎 > 요저개 시리즈' 카테고리의 다른 글
[요저개 6편] Open AI API 활용하기 - DallE 3편 (3) | 2024.03.05 |
---|---|
[요저개 3편] 웹서버와 웹 어플리케이션 서버 (0) | 2023.07.20 |
[요저개 2편] JWT(Json Web Token) (1) | 2023.05.16 |
[요저개 1편] 마이크로서비스 아키텍처(MSA) (0) | 2023.05.03 |