[Web] REST

2024. 8. 6. 19:58개발 지식/Basic

1. REST

 'REST' 는 'REpresentational State Transfer(표현 상태 이전?)' 의 약자로 네트워크 소프트웨어 아키텍처이다. 인터넷과 복잡한 네트워크에서 통신 관리를 위한 지침으로 만들어졌다. REST 를 사용하면 대규모의 고성능 통신을 안정적이게 지원할 수 있다. 또한 쉽게 구현과 수정이 가능해 API 시스템을 쉽게 파악하고 다양한 플랫폼에서 사용할 수 있다는 장점을 가진다.

 

 

2. REST API

 API 개발자는 다양한 아키텍처를 통해 API 를 설계하는데, REST 아키텍처 스타일을 따라 설계한 APIREST API 라고 한다. 간혹 RESTful API 란 용어를 확인할 수 있는데, 이는 일반적으로 RESTful Web API 를 말하는 것이다. 또한 많은 현업의 많은 개발자들이 REST API 와 RESTful API 를 같은 의미를 사용한다고 한다.

 

 

3. 제한 조건

  • Uniform Interface : 균일한 인터페이스는 모든 RESTful 웹 서비스 디자인의 기본이다. 서버가 표준 형식으로 정보를 전송한다는 것을 나타낸다. 해당 조건에는 4가지 아키텍처 제약 조건이 존재한다.
    1. 요청은 리소스를 식별해야 하므로 균일한 리소스 식별자를 사용한다.
    2. 클라이언트의 경우 리소스를 수정, 삭제하기에 충분한 정보를 리로스 표현에서 가지고 있다. 서버의 경우 리소스를 자세히 설명하는 메타데이터를 전송해 해당 조건을 충족한다.
    3. 클라이언트는 형식이 지정된 리소스를 추가로 처리하는 방법에 대한 정보를 수신한다. 서버의 경우 클라이언트가 리소스를 적절하게 사용할 수 있는 방법에 대한 메타데이터가 포함된 명확한 메시지를 전송한다.
    4. 클라이언트는 작업 완료에 필요한 관련 리소스에 대한 정보를 수신한다. 서버의 경우 클라이언트가 더 많은 리소스를 동적으로 검색할 수 있게 형식이 지정된 리소스에 하이퍼링크를 넣어 전송한다.
  • Stateless : 무상태라고 말하며 서버가 이전의 모든 요청과 독립적으로 모든 클라이언트의 요청을 완료하는 통신 방법이다. 클라이언트는 임의의 순서로 리소스를 요청할 수 있으며, 모든 요청은 무상태이거나 다른 요청과 분리 된다. 즉, 서버가 매번 요청을 완전히 이해하고 이행할 수 있음을 뜻 한다.
  • Layered System : 계층화 시스템, 클라이언트는 클라이언트-서버 사이의 또 다른 승인된 중개자에게 연결할 수 있다. 서버는 요청을 다른 서버로 전달할 수도 있으며, 클라이언트의 요청을 수행하기 위해 함께 작동하는 보안, 애플리케이션 및 비즈니스 로직과 같은 여러 계층을 여러 서버에서 실행될 수 있게 RESTful 웹 서비스를 설계할 수 있다.
  • Cacheable : 캐시 가능성으로 서버 응답 시간을 개선하기 위해 클라이언트 또는 중개자에게 일부 응답을 저장하는 프로세스인 캐싱을 지원한다. 웹 사이트 방문시 서버는 해당 웹 페이지의 이미지를 캐싱 또는 저장하여, 이후에는 캐시에 직접 이미지를 사용한다. RESTful 웹 서비스의 경우 캐시 가능 또는 캐시 불가능으로 정의 되는 API 응답을 통해 캐싱을 제어한다. 
  • Client-Server model : 클라이언트-서버 구조를 통해 아키텍처를 단순화하고 작은 단위로 분리하여 각 파트가 독립적으로 개선될 수 있도록 한다.
  • Code on demand(optional) : 온디맨드 코드, 서버는 소프트웨어 프로그래밍 코드를 클라이언트에 전송, 클라이언트 기능을 일시적으로 확장하거나 사용자 지정할 수 있다. 대표적인 예가 정보 오입력시 잘못된 입력이라 알려주는 것이다.

참고 문서

'개발 지식 > Basic' 카테고리의 다른 글

[DB] SQL  (0) 2024.08.13
[Web] API  (0) 2024.08.06
[Web] REST API 란 무엇일까?  (0) 2024.08.06
[Web] TCP/IP  (0) 2024.08.02
[Web] Protocol  (0) 2024.08.02