REST API란

P__.mp4·2022년 11월 13일
0

WEB

목록 보기
5/5

REST 란?

REST란 'Representational State Transfer'의 약자로, 웹과 같은 분산 하이퍼미디어 시스템 아키텍처의 한 형식. 주고받는 자원(Resource)에 이름을 규정하고 URI에 명시해 HTTP Method(GET, POST, PUT, DELETE)를 통해 해당 자원의 상태를 주고받는 것을 의미한다.

기본적으로 웹의 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일이다.

HTTP URL을 통해 자원(Resource)을 명시하고, HTTP Method(GET, POST, PUT, DELETE)을 통해 해당 자원에 대한CRUD Operation을 적용하는 것을 의미한다.

REST API란?

API의 개념을 짚고 가야한다. API는 'Application Programming Interface'의 약자로, 애플리케이션에서 제공하는 인터페이스를 의미한다. 각각의 애플리케이션의 데이터를 주고 받기 위해 API가 사용된다.

즉, REST API는 REST 아키텍처를 따르는 시스템/애플리케이션 인터페이스라고 볼 수 있다. 이렇게 REST 아키텍처를 구현하는 웹 서비스를 'RESTful하다'라고 표현을 한다.

REST의 특징

  • 유니폼 인터페이스

    • '일관된 인터페이스'를 의미, REST 서버는 HTTP 표준 전송 규약을 따르기 때문에 어떤 프로그래밍 언어로 만들어졌느냐와 상관없이 픗랩폼 및 기술에 종속되지 않고 여러 방면으로 호환 가능하다는 것을 의미
  • 무상태성

    • HTTP 프로토콜은 Stateless Protocol이므로 REST 역시 '무상태성(stateless)'의 특징을 가진다. 서버에 상태 정보를 따로 보관하거나 관리하지 않는다는 의미.
    • Server는 각각의 요청에 대해 완전한 별개의 것으로 인식하고 처리한다.
      • 즉, 이전 요청이 다음 요청 처리에 연관되어서는 안된다.
  • 캐시 가능성

    • HTTP 표준을 그대로 사용하기 때문에 HTTP의 캐싱 기능을 적용할 수 있다.
  • 레이어 시스템

    • REST 서버는 네트워크 상의 여러 계층으로 구성될 수 있다.
    • Client는 REST API Server만 호출한다.
    • REST Server는 다중 계층으로 구성될 수 있다.
      • 순수 비즈니스 로직 수행 뿐만 아니라 수행 앞단에 보안, 로드밸런싱, 암호화, 사용자 인증 등을 추가하여 구조상의 유연성을 줄 수 있다.
  • 클라이언트 - 서버 아키텍처

    • REST Server는 API를 제공하고 클라이언트는 사용자 정보를 관리하는 구조로 분리해 설계한다.
    • 서로에 대한 의존성을 낮출 수 있다.

REST의 URI 설계 규칙

  • URI의 마지막에는 '/'를 포함하지 않는다.
  • 언더바(_)를 사용하지 않는다. 대신 하이픈(-)을 이용한다.
  • URL에는 행위(동사)가 아닌 결과(명사)를 포함한다.
    • 행위는 HTTP 메서드로 표현할 수 있어야 한다.
  • URI는 소문자로 작성해야 한다.
  • 파일 확장자는 URI에 포함하지 않는다.
    • 파일 확장자는 HTTP에서 제공하는 Accept 헤더를 사용한다.

설계 예시

CURDHTTP MethodURI
resource들의 목록 표시GET/resource
resource 하나의 표시GET/resource/:id
resource를 생성POST/resource
resource를 수정PUT/resource/:id
resource를 삭제DELETE/resource/:id

응답 상태코드

  • 1XX : 전송 프로토콜 수준의 정보 교환
  • 2XX : 클라이언트 요청이 성공적으로 수행됨
  • 3XX : 클라이언트는 요청을 완료하기 위해 추가적인 행동을 취해야함
  • 4XX : 클라이언트의 잘못된 요청
  • 5XX : 서버 쪽 오류로 인한 상태코드
profile
개발은 자신감

1개의 댓글

comment-user-thumbnail
2022년 11월 15일

와 ! 짱 !

답글 달기