REST?

REST는 Representational State Transfer의 약자로, 자원을 정의하고 자원에 대한 주소를 지정하는 방법의 모음

REST 제약조건

REST의 제약조건을 제대로 지키면서 아키텍처를 만드는것을 RESTful이라고 한다.

  1. 클라이언트 - 서버 구조
    • 서버는 API제공, 클라이언트는 세션, 로그인정보등을 직접 관리하는 구조로 각각의 역할이 확실하게 구분됨
    • 개발해야할 내용이 명확해지고 서로간의 의존성이 줄어들게 됨
  2. 무상태성
    • 서버는 클라이언트의 상태 정보를 저장하지 않음
  3. 캐시 가능
    • REST는 HTTP의 웹표준을 그대로 사용하기 때문에, HTTP가 가진 캐싱 기능 적용 가능
  4. 계층화 시스템
    • REST 서버는 다중 계층으로 구성될 수 있음
  5. 자체 표현 구조
    • REST API 메시지만 보고 쉽게 이해할 수 있음
  6. 유니폼 인터페이스(uniform interface)
    • URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일

REST API의 구성

  1. 자원(resource) : URI
  2. 행위(verb) : HTTP 메소드
  3. 표현(representations) : 리소스에 대한 표현(HTTP Message Body)

REST API 설계 규칙

  • URI 설계 : URI는 웹에 있는 자원의 이름과 위치를 식별한다.
  • 명사 사용 : URI는 명사를 사용하여야 하며, 세부적인 표현의 한계가 있을때는 동사를 포함할 수도있다.
  • 동사는 HTTP 메소드로 표현 : 동사(자원에 대한 행위)는 HTTP 메소드는 GET, PUT, DELETE, POST로 표현하여야 한다.
  • 복수형 사용
  • 슬래시(/)로 계층관계 표현 : URI의 마지막에는 슬래시를 넣지 않는다.
  • URI는 소문자로 작성
  • 가독성을 높이려면 하이픈(-)사용 / (_) 사용금지