오답노트

[Web] REST API 본문

Java/Spring

[Web] REST API

권멋져 2023. 7. 12. 10:37

REST

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

아래 6 항목을 지켜야 RESTful하다고 할 수 있다.

 

  1. Client, Server : 클라이언트와 서버가 서로 독립적으로 분리 되어 있어야한다.
  2. Stateless : 요청에 대해서 클라이언트의 상태를 서버에 저장하지 않는다.
  3. Cache : 클라이언트 서버의 응답을 Cache(임시저장) 할 수 있어야한다. 클라이언트가 Cache를 통해서 응답을 재사용할 수 있어야 하며, 이를 통해서 서버의 부하를 낮춘다.
  4. 계층화 : 서버와 클라이언트 사이에, 방화벽, 게이트웨이, Proxy 등 다양한 계층 형태로 구성이 가능해야 하며, 이를 확장 할 수 있어야한다.
  5. 인터페이스 일관성 : 인터페이스의 일관성을 지키고, 아키텍처를 단순화시켜 작은 단위로 분리하여, 클라이언트, 서버가 독립적으로 개선될 수 있어야한다.
  6. Code on Demand (Optional) : 자바 애플릿, 자바스크립트,플래시 등 특정한 기능을 서버로부터 클라이언트가 전달받아 코드를 실행 할 수 있어야 한다.

인터페이스 일관성

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

 

자원의 식별

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

 

메시지를 통한 리소스 조작

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

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

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

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

 

자기서술적 메시지

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

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

 

Application 상태에 대한 엔진으로써 하이퍼미디어

REST API를 개발할 때 단순히 Client 요청에 대한 데이터만 응답해주는 것이 아닌 관련된 리소스에 대한 Link 정보까지 같이 포함되어져야한다.

 

'Java > Spring' 카테고리의 다른 글

[Spring Boot] GET  (0) 2023.07.12
[Spring Boot] 스프링 부트란  (0) 2023.07.12
[Web] HTTP Protocal  (0) 2023.07.12
[Web] URI 설계 패턴  (0) 2023.07.12
[Web] 웹 개발 개론  (0) 2023.07.12