본문 바로가기
카테고리 없음

REST API (Representational State Transfer) 에 대하여

by cook_code 2023. 7. 25.
반응형

 

REST의 개념 

REST는 Representational State Transfer의 약자로

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

 

REST를 사용하는 이유

  • 웹페이지가 로드된 후 특정 상황에서만 서버에서 데이터를 불러오기 위해
  • 새로고침 없이 페이지를 업데이트하기 위해
  • 백그라운드에서 웹서버에 데이터를 전송하기 위해

 

REST의 구성 요소 

  • 자원 (Resource) : HTTP URI
  • 자원에 대한 행위 (Verb) : HTTP Method
  • 자원에 대한 행위의 내용 (Representations) : HTTP Message PayLoad

 

REST의 특징 

  • SERVER-CLIENT 
  • STATELESS 
  • CACHEABLE
  • LAYERED SYSTEM
  • UNIFORM INTERFACE

 

REST의 특징 상세 

더보기

1. 서버-클라이언트 디커플링 

REST API 디자인에서 서버와 클라이언트 애플리케이션은 서로 간에 완전히 독립적이어야 합니다. 

클라이언트 > 요청된 리소스의 URI

서버 > HTTP를 통해 요청된 소스를 전달 

 

2. STATELESS 

각 요청에서 처리에 필요한 모든 정보를 포함해야 함을 의미합니다. 

REST API는 서버측 세션을 필요로 하지 않습니다. 

서버 애플리케이션은 클라이언트 요청과 관련된 데이터를 저장할 수 없습니다. 

 

3. 캐싱 가능성

가능하면 리소스를 클라이언트 또는 서버 측에서 캐싱할 수 있어야 합니다. 

또한 서버 응답에는 전달된 리소스에 대해 캐싱이 허용되는지 여부에 대한 정보도 포함되어야 합니다. 

 

4. 계층 구조 아키텍처 

REST API에서는 호출과 응답이 서로 다른 계층을 통과합니다.

클라이언트와 서버 간 통신 루프에는 다수의 서로 다른 중개자가 있을 수 있습니다. 

따라서 REST API는 애플리케이션 또는 중개자와 통신하는지 여부를

클라이언트나 서버가 알 수 없도록 설계되어야 합니다. 

 

5. 균일한 인터페이스 

요청이 어디에서 오는지와 무관하게, 동일한 리소스에 대한 모든 API 요청은 동일하게 보여야 합니다. 

REST API는 사용자의 이름이나 이메일 등 동일한 데이터 조각이 오직 하나의 URI에 속함을 보장해야 합니다. 

리소스에는 클라이언트가 필요로 하는 모든 정보를 포함해야 합니다. 

 

6. 코드 온디맨드 (옵션)

REST API는 일반적으로 정적 리소스를 전송하지만, 

특정한 경우, 응답에 실행 코드를 포함할 수 있습니다. 

이 경우, 코드는 요청 시에만 실행되어야 합니다. 

 

REST의 장점 

  • HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위해 별도의 인프라를 구축할 필요가 없습니다.
  • HTTP 프로토콜의 표준을 최대한 활용하여 여러 추가적인 장점을 함께 가져갈 수 있게 해줍니다.
  • HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능합니다.
  • HyperMedia API의 기본을 충실히 지키며 범용성을 보장합니다.
  • REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있습니다.
  • 여러 가지 서비스 디자인에서 생길 수 있는 문제를 최소화합니다.
  • 서버와 클라이언트의 역할을 명확하게 분리합니다.

 

REST의 단점

  • HTTP Method 형태가 제한적입니다.
  • 브라우저를 통해 테스트 할 일이 많은 서비스라면 쉽게 고칠 수 있는 URL보다 HEADER의 정보 값을 처리해야 하므로 전문성이 요구됩니다. 
  • 구형 브라우저와 호환이 되지 않아 지원해주지 못하는 동작이 많습니다.

 

REST의 작동방식

  • REST API는 HTTP 요청을 통해 통신함으로써 리소스 내에서 CRUD 등의 표준 데이터베이스 기능을 수행합니다. 
  • 모든 HTTP 메소드는 API 호출에서 사용될 수 있습니다. 
  • JSON, HTML, XLT, Python, PHP, TXT 등 거의 모든 형식으로 클라이언트에게 전달될 수 있습니다. 
  • JSON은 사람과 기계가 모두 읽을 수 있고, 프로그래밍 언어에 구애받지 않기 때문에 자주 사용됩니다. 
  • 요청 헤더와 매개변수 역시 메타데이터, 권한부여, URI, 캐싱, 쿠키 등의 중요한 식별자 정보를 포함하므로 REST API 호출에서 중요합니다. 

 

REST API 컨벤션

1. URI는 동사보다 명사, 대문자보다 소문자를 사용해야 한다. 

2. 마지막에 슬래시를 포함하지 않는다. 

3. 언더바 대신 하이픈을 사용한다. 

4. 파일 확장자는 URI에 포함하지 않는다. 

5. 행위를 포함하지 않는다. 

 

참고 블로그

 

  • REST API의 특징 상세 
 

REST API란? | IBM

이 안내서에서는 네트워크 애플리케이션의 관리를 위한 아키텍처 스타일인 REST API를 통해 소프트웨어 개발 프로세스를 간소화하는 방법을 알아봅니다.

www.ibm.com

  • REST API 컨벤션
 

[네트워크] REST API란? REST, RESTful이란?

REST API란 REST를 기반으로 만들어진 API를 의미합니다. REST API를 알기 위해 REST부터 알아보도록 하겠습니다. REST란? REST(Representational State Transfer)의 약자로 자원을 이름으로 구분하여 해당 자원의 상

khj93.tistory.com

 

반응형