[ STUDY ]/CS

[ 컴퓨터 네트워크 ] REST

김강니 2024. 11. 13. 17:12

REST

REST는 Representational State Transfer의 약자로, HTTP 통신을 활용하기 위해 고안된 아키텍처이다.

  • Representational
    인터넷상의 자원을 URI로 나타낼 수 있음을 의미
    URI로 표현된 자우너을 HTTP메서드를 이용해 CRUD 연산을 할 수 있다.
  • State Transfer
    자원의 상태를 주고받는 것, 요청받은 자원의 상태를 전달하는 것

💡 REST의 6가지 특징

  • 일관된 인터페이스
    자원을 나타내는 URI를 HTTP 메서드로 조작하는 일관된 인터페이스를 사용한다. 
    HTTP를 따르는 모든 플랫폼에서 REST를 사용할 수 있다.

  • 클라이언트-서버 구조
    클라이언트와 서버 간에 요청-응답의 독립적인 구조를 가진다.
    클라이언트 : 서버에 요청을 보내고 응답을 대기
    서버 : 자원을 가지며 클라이언트의 요청에 응답

  • 무상태성
    서버에서 클라이언트의 요청을 저장하거나 관리하지 않는다.
    서버는 요청에 대한 처리와 응답만 한다.
  • 캐싱 가능
    HTTP 표준을 사용하므로 클라이언트는 이전에 서버로부터 받은 응답을 저장, 재사용하는 캐싱을 할 수 있다.
    캐싱은 서버 부하를 줄여주고, 클라이언트는 응답을 비교적 빨리 받을 수 있다.

  • 자체 표현 구조
    REST API는 자원, 행위, 표현으로 구성되어 REST API 메시지를 보고 어떤 요청을 하는지 알 수 있다.

  • 계층형 구조
    REST 서버는 다중계층으로 구성될 수 있어 보안, 암호화와 같은 계층을 추가해 서버에 대한 기능을 유연하게 확장한다.

 

💡 URI, URL, URN 용어 설명

URI(Uniform Resource Identifier)
인터넷에 있는 자원을 나타내는 주소.
URI는 인터넷에서 요구하는 기본 조건으로 인터넷 프로토콜에 항상 붇어 다닌다.

URL(Uniform Resource Locator)
인터넷에서 자원의 위치를 알 수 있는 규약
웹사이트 주소와 인터넷의 모든 자원을 나타낼 수 있다.


URN(Uniform Resource Name)
자원의 위치 정보가 아닌 실제 자원을 특정한다.

                                 

REST API

말그대로 REST를 기반으로 한 API를 뜻한다. 즉, REST API는 REST를 기반으로 한 인터페이스

📖  API : 다른 소프트웨어 서비스를 제공하기 위한 소프트웨어 인터페이스

 

💡 REST API의 구성

  • 자원 - URI
  • 행위 - HTTP 메서드
  • 표현 - JSON, XML

 

💡 REST API의 작동방식

  1. 클라이언트가 URI로 식별한 자원에 대해 HTTP메서드(POST, GET 등)를 사용해 REST API로 요청한다.
  2. REST API가 HTTP 요청 메시지에 실려 서버에 전달된다.
  3. 서버에서 수신한 HTTP 요청 메시지를 확인해 처리하고 HTTP 응답을 반환한다.
    응답에는 요청에 대한 처리 성공 여부와 정보를 포함
  4. 응답 메시지는 자원에 대한 정보를 JSON 또는 XML 형태로 포함한다.
    클라이언트는 해당 형태의 정보를 수신한다.

 

🔍 RESTful
REST규칙을 지키며 API를 제공하는 서비스를 RESTful하다고 한다.
· 자원에 대한 행위는 HTTP메서드로 나타내며, HTTP 메서드나 행위에 대한 표현이 URI에 들어가면 안된다.
· HTTP 메서드는 명시적이어야한다.(POST는 생성, GET은 조회, PUT은 업데이트, DELETE는 삭제)
· URI는 슬래시(/)로 계층 관계를 표현하고, URI마지막에 슬래시가 들어가면 안된다.
· URI 경로에는 언더바를 사용하면 안되고, 소문자 사용을 지향한다.

 

 

HTTP 메서드

클라이언트가 요청을 보낼 때 요청에 포함된다. 요청의 종류와 목적을 나타낸다.

  • POST : 데이터 생성
  • GET : 데이터 조회
  • PUT : 데이터 갱신
  • DELETE : 데이터 삭제
  • PATCH : 데이터를 일부 갱신
  • HEAD : 데이터 조회(HTTP메시지에 바디를 포함하지 않고 헤더로만 응답)
  • TRACE : 클라이언트의 요청 메시지를 그대로 반환(쿠키, 세션 값 포함해 응답)
  • CONNECT : 요청한 자원을 양방향으로 연결하는 데 사용, SSL을 사용하는 웹사이트에 접속 할 수 있다.
  • OPTION : 서버가 지원하는 HTTP메서드를 메시지 헤더에 포함해 응답