본문 바로가기
공부중/자바스프링

RESTful API 모듈

by 식빵ee 2024. 4. 4.

REST는 Representational State Transfer의 줄임말이며, 자원을 이름(자원의 표현)으로 구분해 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다.

자원(Resource) : 해당 소프트웨어가 관리하는 모든 리소스(파일, 폴터, 그림, 문서 등)

표현 : 자원을 표기하기 위한 이름(예를 들어 DB에 학생 정보를 저장할때, student를 자원의 표현으로 정한다)

행동 : 데이터가 요청되는 시점에서 자원과 상태를 전달하는 것. Http Method인 CRUD(GET, PUT, POST, DELETE)에 의해서 규정된다. 

 

즉, REST는 자원 기반의 구조(ROA, Resource Oriented Architecture) 설계의 중심에 Resource가 있고 HTTP Method를 통해 Resource를 처리하도록 설계된 아키텍쳐를 의미한다.

웹 사이트의 이미지, 텍스트, DB 내용 등의 모든 자원에 고유한 ID인 HTTP URI를 부여한다.

CRUD Operation

1. Create : 생성(POST)

2. Read : 조회(GET) - HEAD: header 정보 조회(HEAD)

3.Update : 수정(PUT)

4. Delete : 삭제(DELETE)

 

REST API - REST 기반으로 서비스 API를 구현한 것.

최근 OpenAPI(누구나 사용할 수 있도록 공개된 API: 구글 맵, 공공 데이터 등), 마이크로 서비스(하나의 큰 애플리케이션을 여러 개의 작은 애플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처) 등을 제공하는 업체 대부분은 REST API를 제공한다.

 

RESTful - REST API를 충실하게 제공하는 웹 서비스를 RESTful하다고 한다.

 

- RESTful의 목적

이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것

RESTful한 API를 구현하는 근본적인 목적이 성능 향상에 있는 것이 아니라 일관적인 컨벤션을 통한 API의 이해도 및 호환성을 높이는 것이 주 동기이니, 성능이 중요한 상황에서는 굳이 RESTful한 API를 구현할 필요는 없다.

 

  1. 간단함과 유연성: RESTful 아키텍처는 HTTP 프로토콜을 기반으로 하며, HTTP의 기본 메서드(GET, POST, PUT, DELETE 등)를 사용하여 리소스를 조작합니다. 이로써 간단하고 직관적인 인터페이스를 제공하며, 시스템을 유연하게 만들어줍니다.
  2. 스케일링: RESTful 서비스는 클라이언트와 서버 간의 상태를 저장하지 않기 때문에 확장성이 좋습니다. 각 요청은 서버에 의해 독립적으로 처리되므로 서버의 부하를 분산시키거나 새로운 인스턴스를 추가하여 시스템을 확장하기 용이합니다.
  3. 독립적인 클라이언트와 서버: RESTful 아키텍처는 클라이언트와 서버 간의 상호 의존성을 최소화한다. 이는 클라이언트와 서버를 독립적으로 개발하고 업데이트할 수 있음을 의미한다.
  4. 웹 기반 표준 사용: RESTful 서비스는 HTTP를 기반으로 하기 때문에 웹 기반의 표준을 사용한다. 이는 다양한 플랫폼 및 기기에서 쉽게 접근하고 사용할 수 있다는 것을 의미한다.
  5. 자원 중심 디자인: RESTful 아키텍처는 자원 중심의 디자인을 채택한다. 이는 시스템을 리소스로 모델링하고, 리소스를 사용하여 데이터를 표현하고 조작함으로써 디자인을 단순화하고 일관성을 유지할 수 있음을 의미.
  6. 캐싱 지원: HTTP의 캐싱 메커니즘을 활용하여 데이터를 캐시하고 효율적으로 사용할 수 있다. 이는 성능을 향상시키고 대역폭을 절약하는 데 도움이 됨

- RESTful 하지 못한 경우

Ex1) CRUD 기능을 모두 POST로만 처리하는 API

Ex2) route에 resource, id 외의 정보가 들어가는 경우(/students/updateName)

 

RESTful API는 HTTP Request를 이용해 데이터를 GET, POST, PUT, DELETE할수 있는 API를 의미한다.

댓글


post image post image post image post image post image post image post image post image