이번 장에서는 현재 웹에서 사용하는 대부분의 데이터 통신인 REST API에 대해서 알아 보고자 한다.
웹과 같은 분산 하이퍼미디어 시스템에서 사용하는 통신 네트워크 아키텍처, 네트워크 아키텍처의 원리 모음
웹은 전송 방식으로 HTTP를, 식별 방법으로 URI를 사용.
URI(Uniform Resource Identifiler, 통합 자원 식별자) : 인터넷에서 특정 자원을 나타내는 유일한 주솟값. REST API는 URI를 사용하여 자원을 처리.
HTTP : 웹에서 GET, POST, PUT, DELETE 등의 메서드를 사용하여 정보를 주고받는 프로토콜
REST는 HTTP와 URI의 단순하고 간결한 장점을 계승한 네트워크 아키텍처.
REST의 구현 원칙을 제대로 지키는 시스템
클라이언트 - 서버(client-server)
이 제약 조건의 기본 원칙은 관심사의 명확한 분리이다. 관심사의 명확한 분리가 선행되면 서버의 구성요소가 단순화되고 확장성이 향상되어 여러 플랫폼을 지원할 수 있음
무상태성(stateless)
서버에 클라이언트의 상태 정보를 저장하지 않는 것을 말함. 단순히 들어오는 요청만 처리하여 구현을 더 단순화함. 단, 클라이언트의 모든 요청은 서버가 요청을 알아듣는 데 필요한 모든 정보를 담고 있어야 함.
캐시 기능(cacheable)
클라이언트의 응답을 캐시할 수 있어야 함.
HTTP의 장점을 그대로 계승한 아키텍처가 REST => HTTP의 캐시 기능도 적용할 수 있음
계층화 시스템(layered system)
서버는 중개 서버(게이트웨이, 프록시)나 로드 밸런싱, 공유 캐시 등의 기능을 사용하여 확장성 있는 시스템을 구성할 수 있음.
코드 온 디맨드(code on demand)
클라이언트는 서버에서 자바 애플릿, 자바스크립트 실행 코드를 전송받아 기능을 일시적으로 확장할 수 있음 (이 제약 조건은 선택 가능)
인터페이스 일관성(uniform interface)
URI(통합 자원 식별자)로 지정된 리소스에 균일하고 통일된 인터페이스를 제공. 아키텍처를 단순하게 분리하여 독립적으로 만들 수 있음
Resource | GET(read) | POST(create) | PUT(update) | DELETE(delete) |
---|---|---|---|---|
/books | book 목록 보기 | 해당 book 추가 | - | - |
/books/1 | ID가 1인 book보기 | - | ID가 1인 book 수정 | ID가 1인 book 삭제 |
참고자료
처음배우는 스프링부트 2