SUE 개발 블로그

REST, REST API, RESTful 본문

인터넷과 웹

REST, REST API, RESTful

이수광 2024. 1. 10. 16:40

REST(Representational State Transfer)는

자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것을 의미한다.

 

HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하며

HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해 해당 자원(URI)에 대한 CRUD Operation을 적용.

 

CRUD Operation 은 대부분의 기본적인 데이터 치리 기능을 의미하며 아래와 같다.

 

C (Create) : 데이터 생성(POST)

R (Read) : 데이터 조회 (GET)

U (Update) : 데이터 수정 (PUT, PATCH)

D (Delete) : 데이터 삭제 (DELETE)

 

REST의 구성요소는 아래와 같다.

 

HTTP URI : 자원(Resource)

HTTP Method : 자원에 대한 요청(Verb)

HTTP Message Pay Load : 자원에 대한 요청의 내용(Representations)

REST의 특징으로는


균일한 인터페이스

균일한 인터페이스는 모든 RESTful 웹 서비스 디자인의 기본입니다. 이는 서버가 표준 형식으로 정보를 전송함을 나타냅니다. 형식이 지정된 리소스를 REST에서 표현이라고 부릅니다. 이 형식은 서버 애플리케이션에 있는 리소스의 내부 표현과 다를 수 있습니다. 예를 들어, 서버는 데이터를 텍스트로 저장하되, HTML 표현 형식으로 전송할 수 있습니다.

균일한 인터페이스에는 4가지 아키텍처 제약 조건이 있습니다.

  1. 요청은 리소스를 식별해야 합니다. 이를 위해 균일한 리소스 식별자를 사용합니다.
  2. 클라이언트는 원하는 경우 리소스를 수정하거나 삭제하기에 충분한 정보를 리소스 표현에서 가지고 있습니다. 서버는 리소스를 자세히 설명하는 메타데이터를 전송하여 이 조건을 충족합니다.
  3. 클라이언트는 표현을 추가로 처리하는 방법에 대한 정보를 수신합니다. 이를 위해 서버는 클라이언트가 리소스를 적절하게 사용할 수 있는 방법에 대한 메타데이터가 포함된 명확한 메시지를 전송합니다.
  4. 클라이언트는 작업을 완료하는 데 필요한 다른 모든 관련 리소스에 대한 정보를 수신합니다. 이를 위해 서버는 클라이언트가 더 많은 리소스를 동적으로 검색할 수 있도록 표현에 하이퍼링크를 넣어 전송합니다.

무상태

REST 아키텍처에서 무상태는 서버가 이전의 모든 요청과 독립적으로 모든 클라이언트 요청을 완료하는 통신 방법을 나타냅니다. 클라이언트는 임의의 순서로 리소스를 요청할 수 있으며 모든 요청은 무상태이거나 다른 요청과 분리됩니다. 이 REST API 설계 제약 조건은 서버가 매번 요청을 완전히 이해해서 이행할 수 있음을 의미합니다. 

계층화 시스템

계층화된 시스템 아키텍처에서 클라이언트는 클라이언트와 서버 사이의 다른 승인된 중개자에게 연결할 수 있으며 여전히 서버로부터도 응답을 받습니다. 서버는 요청을 다른 서버로 전달할 수도 있습니다. 클라이언트 요청을 이행하기 위해 함께 작동하는 보안, 애플리케이션 및 비즈니스 로직과 같은 여러 계층으로 여러 서버에서 실행되도록 RESTful 웹 서비스를 설계할 수 있습니다. 이러한 계층은 클라이언트에 보이지 않는 상태로 유지됩니다.

캐시 가능성

RESTful 웹 서비스는 서버 응답 시간을 개선하기 위해 클라이언트 또는 중개자에 일부 응답을 저장하는 프로세스인 캐싱을 지원합니다. 예를 들어 모든 페이지에 공통 머리글 및 바닥글 이미지가 있는 웹 사이트를 방문한다고 가정해 보겠습니다. 새로운 웹 사이트 페이지를 방문할 때마다 서버는 동일한 이미지를 다시 전송해야 합니다. 이를 피하기 위해 클라이언트는 첫 번째 응답 후에 해당 이미지를 캐싱하거나 저장한 다음 캐시에서 직접 이미지를 사용합니다. RESTful 웹 서비스는 캐시 가능 또는 캐시 불가능으로 정의되는 API 응답을 사용하여 캐싱을 제어합니다.

온디맨드 코드

REST 아키텍처 스타일에서 서버는 소프트웨어 프로그래밍 코드를 클라이언트에 전송하여 클라이언트 기능을 일시적으로 확장하거나 사용자 지정할 수 있습니다. 예를 들어, 웹 사이트에서 등록 양식을 작성하면 브라우저는 잘못된 전화번호와 같은 실수를 즉시 강조 표시합니다. 서버에서 전송한 코드로 인해 이 작업을 수행할 수 있습니다.

 

출처 : https://aws.amazon.com/ko/what-is/restful-api/


REST API(Representational State Transfer API)는

REST의 원리를 따르는 API를 의미한다. 이를 설계하기 위해선 몇가지 지켜야하는 규칙들이 존재한다.

 

  1. URI는 동사보다 명사를, 대문자보다는 소문자를 사용한다. (http://sue97.com/Studying) → (http://sue97.com/study)
  2. 마지막에는 슬래시(/)를 포함하지 않는다. (http://sue97.com/study/) → (http://sue97.com/study)
  3. 언더바 대신 하이폰을 사용한다. (http://sue97.com/study_front) → (http://sue97.com/study-front)
  4. 파일 확장자는 URI에 포함하지 않는다. (http://sue97.com/profile.jpg) → (http://sue97.com/profile)
  5. 행위를 포함하지 않는다. (http://sue97.com/delete-memo/1)  (http://sue97.com/memo/1)

RESTful 이란 REST의 원리를 따르는 시스템을 의미한다.

하지만 REST를 사용했다고 모두가 RESTful 한 것은 아니다.

 

위와 같이 REST API의 설계 규칙을 올바르게 지킨 시스템을 RESTful 하다할 수 있으며

모든 CRUD 기능을 POST로 처리하거나 URI 규칙을 지키지 않은 API는 REST API 라고 사용할 수 있지만 RESTful 하지는 못하다.

'인터넷과 웹' 카테고리의 다른 글

HTTP와 HTTPS  (1) 2024.01.10
크로스 브라우징 ( Cross Browsing )  (4) 2023.12.03
인터넷과 웹  (0) 2023.11.04