반응형
REST (Representational State Transfer)
WWW(월드 와이드 웹)과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 개발 아키텍쳐의 한 형식으로 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든것을 의미하는데, HTTP URL을 통해 자원을 명시하고 POST(생성) GET(조회) PUT(수정) DELETE (삭제) => HTTP Method를 통해 해당 자원에 대한 CRUD Operation을 적용하는것을 의미하고 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나로써 작용한다.
기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍쳐 스타일이라는 장점이 있다.
REST 의 주요 개념과 원칙
- 리소스 지향: REST는 웹 서비스 내의 모든 항목 (예: 사용자, 제품, 주문 등)을 "리소스"로 간주한다. 각 리소스는 고유한 URI (Uniform Resource Identifier)를 가지며, 이 URI를 통해 해당 리소스에 접근할 수 있다.
- 상태없음 (Stateless): 각 요청은 모든 필요한 정보를 포함하고 있어야 한다. 서버는 클라이언트의 상태 정보를 유지하지 않으며, 클라이언트는 필요한 모든 데이터를 각 요청에 포함시켜야 한다.
- 캐시 가능 (Cacheable): 응답은 캐시 가능하거나 캐시 불가능하다는 정보를 포함할 수 있어야 한다. 적절하게 캐시된 응답은 클라이언트와 서버 간의 상호작용을 줄이고 성능을 향상시킨다.
- 클라이언트-서버 구조: 클라이언트는 사용자 인터페이스와 관련된 책임을, 서버는 데이터 접근과 저장과 관련된 책임을 지니게 되는데, 이로 인해 클라이언트와 서버의 개발이 독립적으로 이루어질 수 있다.
- 다양한 표현: 리소스는 여러 가지 형태 (예: JSON, XML)로 표현될 수 있고, 클라이언트는 요청 시 원하는 표현 형식을 지정할 수 있다.
- 무상태 통신: REST는 무상태 통신을 지향한다. 각 요청은 독립적이며 이전 요청에 대한 정보를 포함하고 있지 않는다.
RESTful
RESTful 웹 서비스는 웹 서비스의 디자인 패턴 중 하나로, REST 원칙과 규약을 따르는 서비스를 일컫는다. RESTful 웹 서비스는 정보를 최대한 URL에 집중하며, 기본적인 HTTP 메서드를 이용하여 CRUD(Create, Read, Update, Delete) 작업을 수행하도록 한다.
RESTful의 주요 특징
- 리소스 중심의 아키텍처: RESTful 웹 서비스의 가장 큰 특징은 리소스 지향적인 구조를 가진다는 것인데, 리소스는 각각의 고유한 URL을 가지게 된다. 예를 들어, 사용자 정보를 나타내는 리소스는
/users
와 같은 URL을 가질 수 있다. - 통신의 무상태성: REST에서 각 요청은 상태가 없어야 한다. 이는 각 요청이 모든 필요한 정보를 포함해야 함을 의미하며, 서버는 클라이언트에 대한 세션 정보를 저장해서는 안된다.
- 캐시 처리 가능: RESTful 웹 서비스의 응답은 캐싱이 가능해야 한다. 이를 통해 클라이언트가 응답을 재사용할 수 있게 하여 성능을 향상시킬 수 있다.
- 계층화: 클라이언트는 최종 서버에 직접 연결되어 있지 않을 수 있고, 중간 서버를 거치면서 요청이 처리될 수 있으며, 이를 통해 트래픽 분산, 보안 강화 등의 이점을 얻을 수 있다.
- 코드 온 디맨드 (옵션): 서버는 필요한 경우 실행 가능한 코드를 클라이언트에게 전송할 수 있다.
HTTP 메서드와 RESTful 웹 서비스에서의 용도
- GET : 지정된 리소스를 조회
- 예:
/users-list
- 모든 사용자 목록을 가져온다.
- 예:
- POST: 새로운 리소스를 생성
- 예:
/users-create
- 새 사용자를 추가한다.
- 예:
- PUT: 지정된 리소스의 전체를 갱신
- 예:
/users-update/123
- ID 123을 가진 사용자의 모든 정보를 업데이트.
- 예:
- PATCH: 리소스의 일부분만을 갱신
- 예:
/users-update/123
- ID 123을 가진 사용자의 특정 정보만을 업데이트.
- 예:
- DELETE: 지정된 리소스를 삭제
- 예:
/users-delete/123
- ID 123을 가진 사용자를 삭제한다.
- 예:
반응형
'Develop Log > 개발 관련 잡학다식' 카테고리의 다른 글
SQL, NoSQL 알아보기 (0) | 2023.08.30 |
---|---|
CORS 파헤치기 (0) | 2023.08.28 |
소프트웨어란? (0) | 2023.08.22 |
ESLint가 뭘까 (0) | 2023.08.06 |
SEO가 뭘까? (0) | 2023.08.03 |