REST, REST API, RESTful

leesomyoung·2022년 6월 6일
0

Network

목록 보기
2/5

REST

REST는 REpresentational State Transfer의 약자로, 자원을 이름으로 구분하여 해당 자원의 상태로 주고받는 모든 것을 의미한다.

REST란

  1. HTTP URI(Uniform Resource Identifier)를 통해 자원(resource)을 명시한다.
  2. HTTP Method(GET, POST, PATCH, PUT)를 통해,
  3. 해당 자원(URI)에 대한 CRUD Operation을 수행한다.

REST의 구성요소

  1. 자원(Resource) : HTTP URI
  2. 자원에 대한 행위(Verb) : HTTP Method
  3. 자원에 대한 행위의 내용(Representations) : HTTP Message Payload - JSON, XML, TEXT, RSS 등 여러 형태로 나타내질 수 있다.

REST의 특징

  1. Server-Client 구조
    • 자원을 가지고 있는 쪽이 Server, 자원을 요청하는 쪽을 Client
    • 서로의 의존성이 줄어든다.
  2. Stateless (무상태)
    • HTTP 프로토콜은 Stateless한 Protocol이므로 REST 역시 무상태성을 가진다.
    • Client의 context를 저장하지 않는다.
    • 각각의 요청을 별개의 것으로 인식하고 처리한다.
  3. Cacheable (캐시 상태)
    • 대량의 요청을 효율적으로 처리하기 위해 캐시가 요구
  4. Layered System (계층화)
    • Client는 REST API Server만 호출한다.
    • Proxy, 게이트웨이 같은 네트워크 기반의 중간매체를 활용할 수 있다.
    • 로드밸런싱, 콩유 캐시 등을 통해 확장성과 보안성을 향상시킬 수 있다.
  5. Uniform Interface (인터페이스 일관성)

REST의 장단점

(1) 장점

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

(2) 단점

  • 표준이 존재하지 않는다.

REST API란

REST API란 REST의 원리를 따르는 API이다.
하지만, REST API를 올바르게 설계하기 위해서는 몇 가지 규칙을 지켜야한다.

REST API 규칙

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

    나쁜 예시 : /Users/:userId/Blocked
    좋은 예시: /users/:userId/blocked-user

  2. 마지막에는 /를 포함하지 않는다.

  3. 언더바( _ ) 대신 -을 사용한다.

    나쁜 예시: /users/:userId/blocked_user
    좋은 예시: /users/:userId/blocked-user

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

  5. 행위(HTTP Method)는 포함하지 않는다.

RESTful

RESTful은 일반적으로 REST라는 아키텍처를 사용하는 웹 서비스를 나타내기 위해 사용하는 용어이다. 즉, REST API를 사용하는 서비스는 RESTful하다라고 이야기할 수 있다.

하지만 REST API를 사용했다고 해서 모두 RESTful한 것은 아니다. REST API의 규칙을 올바르게 지키지 못한 시스템은 RESTful하지 못한 시스템이다.


📚Reference

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

0개의 댓글