티스토리 뷰

Web 개발/Spring

REST API란?

happii 2022. 6. 4. 14:44

REST (Representational State Transfer: 자원의 상태 전달) - 네트워크 아키텍쳐

1. Client, Server

: 클라이언트와 서버가 서로 독립적으로 분리되어 있어야 한다.

 

2. Stateless

: 요청에 대해서 클라이언트의 상태를 서버에 저장하지 않는다.

서버는 클라이언트의 상태를 알 지 못하기 때문에 항상 모든 요청에 대해서는 새롭게 요청해야 한다.

 

3. Cache

: 클라이언트는 서버의 응답을 Cache(임시저장) 할 수 있어야 한다.

클라이언트가 Cache를 통해서 응답을 재사용할 수 있어야 하며, 이를 통해서 서버의 부하를 낮춘다.

 

4. 계층화 (Layered System)

: 서버와 클라이언트 사이에 방화벽, 게이트웨이, Proxy 등 다양한 계층 형태로 구성이 가능해야 하며,

이를 확장할 수 있어야 한다.

 

5. 인터페이스 일관성

: 인터페이스의 일관성을 지키고, 아키텍처를 단순화시켜 작은 단위로 분리하여, 

클라이언트, 서버가 독립적으로 개선될 수 있어야 한다.

 

6. Code on Demand (Optional)

: 자바 애플릿, 자바스크립트, 플래시 등 특정한 기능을 서버로부터 클라이언트가 전달받아 코드를 실행할 수 있어야 한다.

 

 

 

다음의 인터페이스 일관성이 잘 지켜졌는지에 따라, REST를 잘 사용했는지 판단할 수 있다.

 

1. 자원의 식별

웹 기반의 REST에서는 리소스 접근을 할 때 URI를 사용합니다.

 

ex) https://foo.co.kr/user/100 

- Resource: user

- 식별자: 100

 

2. 메시지를 통한 리소스 조작

Web에서는 다양한 방식으로 데이터를 전달할 수 있다.

그 중에서 가장 많이 사용하는 방식은 HTML, XML, JSON, TEXT 등이 있다.

이 중에서 어떠한 타입의 데이터인지를 알려주기 위해서 HTTP Header 부분에 content-type을 통해서 데이터의 타입을 지정해 줄 수 있다.

또한 리소스 조작을 위해서 데이터 전체를 전달하지 않고, 이를 메시지로 전달한다.

 

 

3. 자기 서술적 메시지

요청하는 데이터가 어떻게 처리 되어져야 하는지 충분한 데이터를 포함할 수 있어야 한다.

 

HTTP 기반의 REST에서는 HTTP Method와 Header 정보, 그리고 URI의 포함되는 정보를 표현할 수 있다.

ex) GET:  https://foo/co.kr/user/100, 사용자의 정보 요청

 

그 외에 담지 못한 정보들은 URI의 메시지를 통하여 표현한다.

 

 

4. 애플리케이션 상태에 대한 엔진으로써 하이퍼미디어

(실제 현업에서는 잘 작성하지 않고 있다.)

REST API를 개발할 때 단순히 Client 요청에 대한 데이터만 응답해주는 것이 아닌 관련된 리소스에 대한 

Link 정보까지 같이 포함 되어져야 한다.

 

이러한 조건들을 잘 갖춘 경우 REST Ful 하다고 표현하고, 이를 REST API 라고 부른다.

 

 

'Web 개발 > Spring' 카테고리의 다른 글

POJO JAVA란?  (0) 2022.06.03
객체지향 설계 5원칙 SOLID  (0) 2022.06.03
객체지향의 4대 특성 - 캡슐화, 상속, 다형성, 추상화  (0) 2022.06.03
[Spring] Spring Boot 개념  (0) 2022.04.27
[Spring] Rest API 개념 정리  (0) 2022.04.26
최근에 올라온 글
Total
Today
Yesterday