본문 바로가기

Develop Log/개발 관련 잡학다식

REST에 대해 알아보기

반응형

REST (Representational State Transfer)

WWW(월드 와이드 웹)과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 개발 아키텍쳐의 한 형식으로 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든것을 의미하는데, HTTP URL을 통해 자원을 명시하고 POST(생성) GET(조회) PUT(수정) DELETE (삭제) => HTTP Method를 통해 해당 자원에 대한 CRUD Operation을 적용하는것을 의미하고 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나로써 작용한다.

기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍쳐 스타일이라는 장점이 있다.

 

REST 의 주요 개념과 원칙

 

  1. 리소스 지향: REST는 웹 서비스 내의 모든 항목 (예: 사용자, 제품, 주문 등)을 "리소스"로 간주한다. 각 리소스는 고유한 URI (Uniform Resource Identifier)를 가지며, 이 URI를 통해 해당 리소스에 접근할 수 있다.
  2. 상태없음 (Stateless): 각 요청은 모든 필요한 정보를 포함하고 있어야 한다. 서버는 클라이언트의 상태 정보를 유지하지 않으며, 클라이언트는 필요한 모든 데이터를 각 요청에 포함시켜야 한다.
  3. 캐시 가능 (Cacheable): 응답은 캐시 가능하거나 캐시 불가능하다는 정보를 포함할 수 있어야 한다. 적절하게 캐시된 응답은 클라이언트와 서버 간의 상호작용을 줄이고 성능을 향상시킨다.
  4. 클라이언트-서버 구조: 클라이언트는 사용자 인터페이스와 관련된 책임을, 서버는 데이터 접근과 저장과 관련된 책임을 지니게 되는데, 이로 인해 클라이언트와 서버의 개발이 독립적으로 이루어질 수 있다.
  5. 다양한 표현: 리소스는 여러 가지 형태 (예: JSON, XML)로 표현될 수 있고, 클라이언트는 요청 시 원하는 표현 형식을 지정할 수 있다.
  6. 무상태 통신: REST는 무상태 통신을 지향한다. 각 요청은 독립적이며 이전 요청에 대한 정보를 포함하고 있지 않는다.

 

RESTful

RESTful 웹 서비스는 웹 서비스의 디자인 패턴 중 하나로, REST 원칙과 규약을 따르는 서비스를 일컫는다. RESTful 웹 서비스는 정보를 최대한 URL에 집중하며, 기본적인 HTTP 메서드를 이용하여 CRUD(Create, Read, Update, Delete) 작업을 수행하도록 한다.

 

RESTful의 주요 특징

  1. 리소스 중심의 아키텍처: RESTful 웹 서비스의 가장 큰 특징은 리소스 지향적인 구조를 가진다는 것인데, 리소스는 각각의 고유한 URL을 가지게 된다. 예를 들어, 사용자 정보를 나타내는 리소스는 /users와 같은 URL을 가질 수 있다.
  2. 통신의 무상태성: REST에서 각 요청은 상태가 없어야 한다. 이는 각 요청이 모든 필요한 정보를 포함해야 함을 의미하며, 서버는 클라이언트에 대한 세션 정보를 저장해서는 안된다.
  3. 캐시 처리 가능: RESTful 웹 서비스의 응답은 캐싱이 가능해야 한다. 이를 통해 클라이언트가 응답을 재사용할 수 있게 하여 성능을 향상시킬 수 있다.
  4. 계층화: 클라이언트는 최종 서버에 직접 연결되어 있지 않을 수 있고, 중간 서버를 거치면서 요청이 처리될 수 있으며, 이를 통해 트래픽 분산, 보안 강화 등의 이점을 얻을 수 있다.
  5. 코드 온 디맨드 (옵션): 서버는 필요한 경우 실행 가능한 코드를 클라이언트에게 전송할 수 있다.

 

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