REST & REST API

신명철·2022년 2월 19일
0

네트워크

목록 보기
8/17

REST (REpresentational State Transfer)

  • 자원을 이름으로 구분해서 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미하낟.
  • 즉, 자원(resource)의 표현(representaion)에 의한 상태(state) 전달
    • 자원의 표현: 자원(eg. 그림,문서,...) 를 표현하기 위한 이름(e.g students, orders, ...)
    • 상태(정보) 전달: 데이터가 요청되어지는 시점에서의 자원의 상태(정보) 전달
  • REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 살릴 수 있는 아키텍처 스타일이다.

구체적 개념

  • HTTP URI(Uniform Resource Identifier)를 통해서 자원을 명시, HTTP Method(GET,POST,PUT,DELETE,UPDATE) 를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.
  • 즉, REST는 자원 기반의 구조(ROA, Resource Oriented Architecture) 설계의 중심에 Resource 가 있고 HTTP Method 를 통해 Resource 를 처리하도록 설계된 아키텍처를 의미한다.
  • 웹 사이트의 이미지, 텍스트 등의 모든 자원에 고유한 ID인 HTTP URI를 부여한다.

구성 요소

  1. 자원(Resource), URI
    모든 자원은 고유한 ID 를 가지고 있고 서버에 존재하는 ID 를 클라이언트는 각 자원의 상태를 조작하기 위해 요청을 보낸다. HTTP 에서 이러한 자원을 구별하는 ID 는 'Students/1' 같은 HTTP URI이다.

  2. 행위(Verb), HTTP Method
    클라이언트는 URI 를 이용해 자원을 지정하고 조작하기 위해 Method 를 사용한다. HTTP 에서는 GET,POST,PUT,DELETE,UPDATE 를 제공한다.

  3. 표현(Representation)
    클라이언트가 서버로 요청을 보내면 서버가 응답을 보내주는 자원의 상태를 Representation이라고 한다. REST 에서 하나의 자원은 JSON, XML, TEXT, RSS, 등 여러 형태로 표현된다.

특징

  1. 클라이언트/서버 구조
    클라이언트와 서버 각각의 역할이 명확히 구분되기 때문에 개발해야 하는 내용이 명확해지고 서로 간 의존성이 줄어든다.

  2. 무상태(Stateless)
    작업을 위한 상태정보를 따로 저장하지 않는다. API 서버는 들어오는 요청만 처리한다. 결과적으로 서비스의 자유도가 높아지고 서버에서 불필요한 정보를 관리하지 않아 구현이 단순해진다.

  3. 캐시 처리 가능(Cacheable)
    REST 는 HTTP 를 활용하기 때문에 기존 인프라를 그대로 활용할 수 있다. 따라서 Last-Modified 태그나 E-Tag를 이용해서 HTTP 의 캐싱 기능을 구현할 수 있다.

  4. 자체 표현 구조(Self-Descriptiveness)
    REST 의 또 다른 특징은 REST API 메세지만 보고도 이를 이해할 수 있는 자체 표현 구조로 되어 있다는 점이다.

  5. 인터페이스 일관성(Uniform Interface)
    URI 로 지정한 자원에 대해 조작을 통일하고 한정적인 인터페이스로 수행한다. HTTP 표준만 따른다면 모든 플랫폼에서 사용 가능하다.

  6. 계층화 구조
    REST 서버는 다중 계층으로 구현될 수 있다. 보안, 로드밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있고, PROXY, 게이트웨이 같은 네트워크 기반 중간 매체를 사용할 수 있다.

장단점

장점

  • HTTP 인프라를 그대로 사용하기 때문에 REST API 사용을 위한 인프라를 별도로 구현할 필요 없음
  • HTTP 표준을 최대한 활용해 추가적인 장점들을 함께 가져갈 수 있다.
  • Hypermedia API 의 기본을 충실히 지키면서 범용성 보장
  • REST API 메시지가 의도하는 바를 명확하게 나타내기 때문에 의도하는 바 쉽게 파악 가능
  • 서버와 클라이언트의 역할을 명확하게 분리한다

단점

  • REST는 설계 가이드일 뿐 표준이 아니다. 표준 자체가 존재하지 않는다.
  • REST는 HTTP 메소드를 이용해 URI를 표현하는데 쉬운 사용이 가능하지만 제한적이라는 단점이 있다.

REST API

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

특징

  • 사내 시스템들도 REST 기반으로 시스템을 분산해서 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 할 수 있다.
  • HTTP 를 지원하는 프로그램 언어로도 서버, 클라이언트를 구현할 수 있기 때문에 다용한 언어로 클라이언트를 제작할 수 있다.

설계 기본 규칙

설계 규칙

RESTful 하지 못한 경우는 무엇일까?

  • CRUD 를 모두 POST 로만 처리하는 API
  • route에 resource, id 외 다른 정보가 들어가는 경우
    • e.g /student/updateName
profile
내 머릿속 지우개

0개의 댓글