RESTful API는 REST(Representational State Transfer) 원칙을 따르는 API를 의미한다
REST는 웹 상의 시스템 간에 통신을 위한 아키텍처 스타일로, 네트워크 아키텍처 원칙의 모음이다
2000년에 로이 필딩(Roy Fielding)의 박사 논문에서 처음 소개되었다
RESTful API를 통해 클라이언트와 서버 간에 데이터를 주고받을 때 HTTP 프로토콜을 사용하여 리소스를 처리한다
RESTful API의 핵심 원칙
- 클라이언트-서버 구조 (Client-Server Architecture)
- 클라이언트와 서버는 서로 독립적으로 분리되어 있어야 한다
- 이는 각각의 부분을 독립적으로 발전시킬 수 있게 해준다
- 무상태성 (Stateless)
- 각 요청은 독립적이어야 하며, 이전 요청의 정보를 서버가 유지하지 않는다
- 모든 요청은 자체적으로 충분한 정보를 가지고 있어야 한다
- 캐시 처리 가능 (Cacheable)
- RESTful API 응답은 캐시가 가능해야 한다
- 캐싱을 통해 클라이언트는 반복된 데이터 요청에 대해 서버가 아닌 캐시로부터 응답을 받을 수 있어 효율성을 높일 수 있다
- 계층화된 시스템 (Layered System)
- 클라이언트는 최종 서버와 직접 통신하지 않아도 된다
- 중간에 여러 계층(예: 로드 밸런서, 인증 서버 등)을 둘 수 있다
- 코드 온 디맨드 (Code on Demand, 선택적)
- 서버는 실행 가능한 코드를 클라이언트에 전송할 수 있으며, 이를 통해 클라이언트의 기능을 일시적으로 확장할 수 있다
- 클라이언트가 필요한 기능을 서버에서 받아 실행할 수 있어서, 클라이언트 측에서는 해당 기능을 구현할 필요 없이 서버가 제공하는 기능을 활용할 수 있다
- 서버는 실행 가능한 코드를 클라이언트에 전송할 수 있으며, 이를 통해 클라이언트의 기능을 일시적으로 확장할 수 있다
- 일관적인 인터페이스 (Uniform Interface)
- 시스템 내 모든 컴포넌트가 정보를 전달하는 방식이 통일되어 있어야 한다
- 일관된 인터페이스는 리소스 식별, 자기 서술적 메시지, 하이퍼미디어(HATEOAS) 등을 포함한다
,
RESTful API의 구성 요소
- 리소스(Resource)
- 서버에 저장된 데이터 항목 또는 서비스
- 일반적으로 URI(Uniform Resource Identifier)를 통해 식별된다
- 사용자 프로필, 게시물, 주문, 댓글 등이 리소스의 예시
- 각 리소스는 고유한 URI를 가지고 있어야 함
- 클라이언트는 이 URI를 사용하여 해당 리소스에 접근함
- 메서드(Method)
- 리소스에 대한 행동을 정의한다
- 주로 HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용한다
- GET: 리소스를 가져오기 위해 사용
- POST: 새로운 리소스를 생성하기 위해 사용
- PUT: 기존의 리소스를 업데이트하기 위해 사용
- DELETE: 리소스를 삭제하기 위해 사용
- 표현(Representation)
- 클라이언트와 서버 간에 교환되는 리소스의 상태다
- JSON이나 XML 같은 형식을 사용한다
- 클라이언트는 서버로부터 받은 표현을 해석하여 해당 리소스의 상태를 이해하고 처리할 수 있다
- 서버로부터 받은 사용자 프로필 정보를 JSON 형식으로 표현된 데이터로 받아와 클라이언트 애플리케이션에서 이를 화면에 표시하는 등의 작업을 수행할 수 있다
RESTful API는 웹 서비스를 구축하기 위한 간단하고 직관적인 방법을 제공한다
이 아키텍처 스타일을 통해 개발자는 다양한 클라이언트(웹, 모바일, IoT 장치 등)에 서비스를 쉽게 제공할 수 있다
'Frontend' 카테고리의 다른 글
HTTP 메소드 (0) | 2024.03.06 |
---|---|
Context API란 (1) | 2024.03.06 |
useEffect 와 useLayoutEffect 차이 (0) | 2024.03.06 |
React-query (0) | 2024.03.06 |
렌더링 성능 향상 위해 어떻게 해야 하는가 (0) | 2024.03.06 |