REST

dobby·2024년 8월 26일

네트워크

목록 보기
19/20
post-thumbnail

HTTP 통신을 쉽게 활용할 수 있는 대표적인 방법으로 REST가 있다.
REST는 HTTP를 기반으로 한 플랫폼에서 범용으로 사용된다.

REST(Representational State Transfer)

HTTP 통신을 활용하기 위해 고안된 아키텍처로, 자원을 명시해 연산을 수행하고 상태를 주고받는 것이다.

Representational은 인터넷상의 자원을 URI로 나타낼 수 있음을 의미한다.

클라이언트는 URI로 표현된 자원을 HTTP 메서드를 이용해 CRUD(Create, Read, Update, Delete) 연산을 할 수 있다.

State Transfer는 자원의 상태를 주고받는 것, 즉 요청받는 자원의 상태를 전달하는 것을 의미한다.


REST의 6가지 제약조건

  • 일관된 인터페이스

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

  • 클라이언트-서버 구조

    클라이언트와 서버 간에 요청-응답의 독립적인 구조를 갖는다.

  • 무상태성

    서버에서는 클라이언트의 요청을 저장하거나 관리하지 않는다. 서버는 클라이언트의 요청에 대한 처리와 응답을 대기한다. 사용자 인증, 로그인 정보 등은 클라이언트에서 직접 관리한다.

  • 캐싱 가능

    HTTP 표준을 사용하므로 클라이언트는 이전에 서버로부터 받은 응답을 저장 및 재사용하는 캐싱을 할 수 있다.

    요청에 대한 응답 내의 데이터에 해당 요청은 캐시가 가능한지 불가능한지 명시해야 한다.

  • 주문형 코드 , (option)

    클라이언트는 서버에게 코드를 요청할 수 있으면, 요청을 받은 서버는 실행 가능한 코드 로직을 제공한다.

    이 제약 사항은 선택사항으로, API는 요청 시 코드를 제공하지 않아도 RESTful이 될 수 있다.

  • 계층형 구조

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

    또한, 각 구성들 간의 계층을 마음대로 상호작용 할 수 없도록 제한한다.


장단점

  • 장점
    HTTP를 기반으로 하기 때문에 별도의 인프라를 구축할 필요가 없다. 그래서 HTTP 표준을 따르면 REST를 쉽게 사용할 수 있다.
  • 단점
    HTTP 메서드를 사용해 자원에 대한 연산을 처리하므로 동작이 한정적이라는 단점이 있다.

URI(Uniform Resource Identifer)
인터넷에 있는 자원을 나타내는 주소이다. URI는 인터넷에서 요구하는 기본 조건으로 인터넷 프로토콜에 항상 붙어 다닌다. URI의 하위 개념으로 URL, URN이 있다.

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

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


REST API

REST를 기반으로 한 API
즉, REST를 기반으로 한 인터페이스라고 할 수 있다.

REST API에서 자원의 식별은 URI로 하고, 자원에 대한 행위는 HTTP 메서드로 나타낸다. 그리고 전달되는 데이터는 JSON 또는 XML 등으로 표현한다.


REST API 작동 방식

  1. 클라이언트가 URI로 식별한 자원을 HTTP 메서드를 사용해 REST API로 요청한다.

  2. REST API가 HTTP 요청 메시지에 실려 서버에 전달된다.

  3. 서버에서는 수신한 HTTP 요청 메시지를 바탕으로 요청 사항을 확인해 처리하고 HTTP 응답을 반환한다. 응답에는 요청에 대한 처리 성공 여부와 정보를 포함한다.

  4. 응답 메시지는 자원에 대한 정보를 JSON 또는 XML 등의 형태로 포함하고 있다.
    클라이언트는 해당 형태의 정보를 수신한다.

REST 규칙을 지키며 API를 제공하는 서비스를 RESTful 하다고 한다.

HTTP 메서드

  • POST: 데이터를 생성할 때 사용
  • GET: 데이터를 조회할 때 사용
  • PUT: 데이터를 갱신할 때 사용
  • DELETE: 데이터를 제거할 때 사용

HTTP 메서드는 CRUD 연산과 매칭된다.


REST에 대해 설명해주세요. RESTful API는 무엇인가요?
REST는 자원을 명시해 연산을 수행하고 해당 자원의 상태를 주고받는 방법을 의미합니다.
구체적으로는 HTTP URL을 통해 자원을 명시하고, HTTP 메서드를 이용해 CRUD 연산을 할 수 있습니다.
Restful API는 REST 규칙을 지키며 API를 제공하는 서비스를 Restful하다고 하며 REST 형식의 API를 REST API라고 부릅니다.

REST 제약 조건에 대해 설명해주세요.
일관된 인터페이스, 클라이언트-서버 구조, 무상태성, 캐싱 가능, 주문형 코드, 계층형 구조 총 6가지의 기본적인 제약 조건이 있습니다.

URL, URI, URN의 차이가 뭘까요?
URI는 인터넷 상에서 자원을 식별할 있는 정보를 의미합니다.
URI에서 위치를 이용해 자원을 식별할 수 있고, 이름을 이용해 식별할 수도 있습니다.
전자를 URL, 후자를 URN이라고 합니다.
URL은 특정 시점에서 자원의 구체적인 위치를 나타내는데, 만약 자원의 위치가 변경되면 기존 URL은 더 이상 사용 불가능하다는 단점이 있습니다.
URN은 이러한 URL의 단점을 보완하기 위해 정의된 표준인데, URN은 자원에 대해 영속적이고 고유한 식별자를 뜻합니다.


NEXT. 토큰 기반의 사용자 인증

profile
성장통을 겪고 있습니다.

0개의 댓글