CS 공부/네크워크

[Network] - REST ?

Huni2397 2025. 4. 28. 16:55

REST의 정의

"REpresentational State Transfer" 의 약자로 해석해보면

자원의 표현( representational )으로 구분하여 자원의 상태를 전송하는 것 

즉, HTTP URI를 통해 자원을 명시하고, HTTP Method(CRUD : GET, POST, PUT, DELETE)를 통해 자원을 처리하는 아키텍처를 의미합니다.

 

REST의 특징

REST 의 특징에 대해 살펴보면 REST의 의미를 더 잘 이해할 수 있습니다.

 

1. Server-Client

  • 클라이언트와 서버를 명확히 분리하여 서로 독립적으로 발전할 수 있도록 한다.

이에 대한 예시를 들면 www.example.com/users/1 을 요청을 한다 했을때

1. client 는 이를 1번 사용자에 대한 정보 요청

2. server는 이에 대한 요청을 처리하고 응답

이렇게 서로의 대한 역할을 분리하는 것을 의미합니다.

이러면 독립성을 유지할수 있어서, 개발할 때 유용할 것 입니다.(문제가 있는 부분만 보면 되니까)

 

2. Stateless 

  • 서버는 클라이언트의 상태를 저장하지 않는다.

즉, 서버에 요청을 독립적으로 처리하는 것을 의미하며 클라이언트가 로그인을 하고 있어도 서버는 이를 저장하지 않기 때문에 클라이언트에 대한 인증 정보를 항상 담아서 요청을 해야합니다.

 

3. cacheable

  • HTTP 웹 표준을 이용하기 때문에 cache가 가능하다.
  • 이는 HTTP 의 Modified태그나 E-Tag를 통해 구현이 가능합니다.
  • GET 메소드에 한정

4. Layered System

  • 시스템을 계층으로 나누어 구성될 수 있다.

server는 다중 계층으로 구성가능 하고 보안, 로드밸런싱, 암호화와 같은 계층을 만들고 proxy, 게이트웨이와 같은 중간매체로 사용가능 하지만 이는 client가 알 필요가 없으므로 api server 만 호출하게 설계해야합니다.

 

5. Uniform Interface (인터페이스 일관성)

  • URI에 대한 요청을 통일 되고 한정적인 인터페이스로 수행하게 해야한다.

이를 통해 다양한 시스템(PC, 모바일, IoT 등) 에서도 같은 방법으로 접근, 통신 가능할 수 있어야 합니다.

이를 지키기 위한 방법으로 자원 식별(URI로 구분), 표현을 통한 자원의 조작(Method를 통한 자원 조작 명시), 자체 표현 구조(메시지를 통해 이해 가능), HATEOAS(응답에 다음 동작에 대한 link 안내) 등이 있습니다.

 

6. Code on Demand (Optional)

  • server에서 클라이언트에게 실행가능한 코드를 전달하는 것

REST의 구성요소

1. Resource(자원)

  • 서버가 관리하고 제공하는 모든 데이터
  • 이를 고유한 URI로 식별

2. Verb(행위)

  • HTTP 프로토콜의 Method - GET, POST, PUT, DELETE

3. Representation of Resource

  • 클라이언트의 데이터 요청에 server는 이에 보여줄 데이터 형식 (JSON, XML ... )을 정하여 보낸다.

 

REST API 에 대해서 공부하려고 한건데 REST만 하더라도 이렇게 내용이 많을줄 몰랐습니다.

다음 글로 REST API에 대해서 설명하는것으로 하겠습니다.