SteadyDrills

RESTful 아키텍처 본문

웹개발

RESTful 아키텍처

Drills 2024. 11. 17. 17:06

241117

 

RESTful 아키텍처

 웹 기반 시스템을 설계하기 위한 소프트웨어 아키텍처 스타일로, "Representational State Transfer"의 약자이다.
REST는 HTTP 프로토콜을 기반으로 하며, 클라이언트와 서버 간의 통신을 효율적으로 수행하는 데 중점으로 만들어졌다.

 

  • 자원 기반
자원은 URI(Uniform Resource Identifier)를 통해 식별된다. JSON, XML, HTML 등 다양한 형식으로 표현될 수 있으며, 클라이언트는 자원의 표현을 요청하고, 서버는 해당 표현을 반환한다.
  • 무상태성(Stateless)
서버의 부하를 줄이고, 확장성을 높이기 위해, 요청은 각각 독립적으로 처리되며, 서버는 클라이언트의 상태를 기억하지 않는다. 이때 클라이언트는 필요한 모든 정보(인증, 형식, 상태 등)를 요청에 포함해야 한다.
  • HTTP 메서드의 활용
RESTful API는 HTTP 메서드를 사용하여 자원에 대한 CRUD(Create, Read, Update, Delete) 작업을 수행한다.
GET: 자원 조회 | POST: 자원 생성 | PUT: 자원 전체 수정 | PATCH: 자원 부분 수정 | DELETE: 자원 삭제
  • 상태 전이(Stateless Communication)
클라이언트와 서버 간의 상호작용은 상태 전이를 통해 이루어진다. 클라이언트가 서버에 요청을 보내면, 서버는 그에 따른 응답을 반환하고, 클라이언트는 새로운 상태로 전이되는 형식이다.
  • 계층화(Layered System)
 클라이언트와 서버 간의 통신이 여러 계층을 통해 이루어질 수 있다. 즉, 클라이언트는 직접 서버와 통신하지 않고, 중간에 프록시 서버나 게이트웨이를 두어 요청을 처리할 수 있다.
  • 캐싱(Caching)
성능을 향상시키고, 불필요한 요청을 감소시키기 위해, 클라이언트의 요청에 대해 서버가 반환하는 응답을 캐싱할 수 있다.
  • 일관성 있는 인터페이스
일관된 인터페이스를 제공하여 클라이언트와 서버 간의 상호작용을 단순화 한다.클라이언트와 서버의 독립성을 높이고, 다양한 클라이언트에서 API를 쉽게 사용할 수 있도록 합니다.

'웹개발' 카테고리의 다른 글

CSRF(Cross-Site Request Forgery) 토큰이란?  (0) 2024.11.22
[DJANGO] FBV와 CBV의 차이  (0) 2024.11.20
SQLite란?  (4) 2024.11.13
Redis란?  (1) 2024.11.08
Gunicorn란?  (0) 2024.11.07