티스토리 뷰

ETC

[ETC] REST API란

hyuuny 2022. 2. 3. 21:10

REST API

REST는 Representational State Transfer의 약자로 아키텍처 스타일이다.


아키텍처 스타일은 아키텍처 패턴과는 조금 다른데, 아키텍처 패턴은 어떤 반복되는 문제 상황을 해결하는 도구이고, 아키텍처 스타일은 반복되는 아키텍처 디자인을 의미한다.


REST 아키텍처 스타일은 6가지 제약조건으로 구성되며, 이 가이드 라인을 따르는 API를 RESTfull API라고 한다.


REST 제약 조건

  • 클라이언트-서버(Client-Server)
  • 상태가 없는(stateless)
  • 캐시되는 데이터(Cacheable)
  • 일관적인 인터페이스(Uniform Interface)
  • 레이어 시스템(Layered System)
  • 코드-온-디맨트(Code-On-Demand)

클라이언트-서버(Client-Server)


클라이언트-서버는 리소스를 관리하는 서버가 존재하고, 다수의 클라이언트가 리소스를 소비하려고 네트워크를 통해 서버에 접근하는 구조를 말한다.


이런 구조 중 우리에게 가장 친숙한 것이 바로 웹 애플리케이션이다.

리소스란 REST API가 리턴할 수 있는 모든 것(HTML, JSON, 이미지 등)을 의미한다.


상태가 없는(stateless)


상태가 없다는 것은 클라이언트가 서버에 요청을 보낼 때, 이전 요청의 영향을 받지 않음을 의미한다.


예를 들어 로그인의 경우 서버는 로그인 상태를 유지하지 못하므로, 요청을 보낼 때마다 로그인 정보를 항상 함께 보내야 한다. 리소스를 수정한 후 수정한 상태를 유지해야 하는 경우에는 서버가 아닌 DB와 같은 곳에 상태를 저장해야한다.


HTTP는 기본적으로 상테가 없는 프로토콜이다. 따라서 HTTP를 사용하는 웹 애플리케이션은 기본적으로 상태가 없는 구조를 따른다.


캐시되는 데이터(Cacheable)


서버에서 리소스를 리턴할 때 캐시가 가능한지 아닌지 명시할 수 있어야 한다.


HTTP에서는 cache-control이라는 헤더에 리소스의 캐시 여부를 명시할 수 있다.


일관적인 인터페이스(Uniform Interface)


일관적인 인터페이스란, 시스템 또는 애플리케이션의 리소스에 접근할 때 인터페이스가 일관적이어야 한다는 뜻이다.


예를 들어 어떤 정보를 가져오기 위해 http://example.com/water를 사용했다고 하자. 이때 정보를 업데이트 하는 데 http://example2.com/water를 사용한다면 이것은 URI의 일관성이 있다고 볼 수 없다.


또 다른 예로 http://example.com/water는 JSON 형식의 리소스를 리턴했다. 그런데 http://example.com/book은 HTML을 리턴했다. 이런 인터페이스는 타입에 일관성이 있다고 볼 수 없다.

요청의 형태와 응답의 형태가 애플리케이션 전반에 걸쳐 일관적이어야 한다는 것이 일관적인 인터페이스 방침이다.


레이어 시스템(Layered System)


클라이언트가 서버에 요청을 할 때, 여러 개의 레이어로 된 서버를 거칠 수 있다.


예를 들어 서버가 인증 서버, 캐싱 서커, 로드 밸런서를 거쳐서 최종적으로 애플리케이션에 도착한다고 가정하자. 이 사이의 레이어들은 요청과 응답에 어떤 영향을 미치지 않으며, 클라이언트는 레이어 존재 유무를 알지 못한다.


코드-온-디맨트(Code-On-Demand)


클라이언트는 서버에 코드를 요청할 수 있고, 서버가 리턴한 코드를 실행할 수 있다.(선택 사항)


REST는 HTTP와 다르다. REST는 HTTP를 이용해 구현하기 쉽고 대부분 그렇게 구현하지만, REST는 아키텍처이고, HTTP는 REST 아키텍처를 구현할 때 사용하면 쉬운 프로토콜이다.

'ETC' 카테고리의 다른 글

[ETC] SOLID 원칙  (0) 2022.01.30
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함