REST API란 무엇인가?

홍준섭·2022년 9월 5일
0

네트워크

목록 보기
14/20

REST API

representational state transfer의 줄임말로
자원(RESOURCE) - URI
행위(Verb) - HTTP METHOD
표현(Representations)로 이루어져있다.

6가지 제약조건

  • uniform interface
    클라이언트와 서버 간의 인터페이스를 정의. 아키텍처를 단순화하고 분리하여 각 부분이 독립적으로 발전할 수 있도록 한다.
  • stateless
    요청을 처리하는데 필요한 상태가 URI, 쿼리 문자열 매개변수, 본문 또는 헤더의 일부로 요청 자체 내에 포함 된다는 것. URI는 리소스를 고유하게 식별하고 본문에는 해당 리소스의 상태가 포함된다. 그런 다음 서버가 처리를 수행한 후 적적할 상태 또는 중요한 상태 조각이 헤더, 상태 및 응답 본문을 통해 클라이언트에 다시 전달 된다.
  • cache 가능
    클라이언트는 응답을 캐시할 수 있다. 따라서 응답은 클라이언트가 추가 요청에 대한 응답으로 부실하거나 부적절한 데이터를 재사용하는 것을 방지하기 위해 암시적 또는 명시적으로 자신을 캐시 가능 여부로 정의해야 한다.
  • 클라이언트 서버 구조
    균일한 인터페이스는 클라이언트를 서버와 분리. 클라이언트가 각 서버 내부에 남아 있는 데이터 저장소에 관심을 두지 않음을 의미하므로 클라이언트 코드의 이식성이 향상 된다. 서버는 사용자 인터페이스나 사용자 상태와 관련이 없으므로 서버가 더 간단하고 확장 가능하다. 인터페이스가 변경되지 않는 한 서버와 클라이언트는 독집적으로 교체되고 개발될 수 있다.
  • 계층화 시스템
    클라이언트는 일반적으로 최종 서버에 직접 연결되어 있는지 아니면 중간에 중간에 연결되어 있는지 알 수 없다. 중간 서버는 로드 밸런싱을 활성화하고 공유 캐시를 제공하여 시스템 확장성을 향상 시킬 수 있다. 계층은 보안 정책을 시행할 수도 있다.
  • 주문형 코드(선택사항)
    서버는 실행할 수 있는 논리를 클라이언트에 전송하여 클라이언트의 기능을 일시적으로 확장하거나 사용자 지정할 수 있다.

디자인 가이드

  • URI는 정보의 자원을 표현해야 한다.
    리소스명은 동사보다는 명사를 사용한다.
  • 자원에 대한 행위는 HTTP Method로 표현한다.
    POST를 통해 해당 URI를 요청하면 리소스를 생성
    GET을 통해 해당 리소스를 조회
    PUT을 통해 해당 리소스를 수정
    DELETE를 통해 리소스를 삭제

URI 설계시 주의할 점

  • 슬래시 구분자는 계층 관계를 나타내는 데 사용
  • URI 마지막 문자로 슬래시를 포함하지 않는다.
  • 하이픈은 URI 가독성을 높이는데 사용
  • 밑줄은 URI에 사용하지 않는다.
  • URI 경로에는 소문자가 적합하다.
  • 파일 확장자는 URI에 포함시키지 않는다.
profile
개발 공부중입니다

0개의 댓글