REST API

이일우·2023년 3월 29일

공부하기

목록 보기
26/42

REST란

Representational State Transfer의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미합니다.
REST는 네트워크 상에서 클라이언트와 서버 사이의 통신 방식 중 하나입니다. 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 활용할 수 있는 아키텍처 스타일입니다.

REST API의 구성 요소

  • Resource: REST API에서 제공하는 모든 정보를 리소스로 표현합니다. 예를 들어, 사용자 정보, 제품 정보, 주문 정보, URI 등이 리소스가 될 수 있습니다.

    URL과 URI는 무엇인가

  • HTTP Method: REST API에서 사용하는 HTTP Method는 POST, GET, PUT, DELETE 등이 있습니다. 각각의 HTTP Method는 서버에서 수행할 동작을 나타냅니다.

    HTTP Method와 Status Code

  • Representations: 리소스에 대한 표현 방식입니다. 예를 들어, JSON, XML 등이 있습니다. 클라이언트는 서버에서 응답으로 받은 데이터를 자신이 원하는 형식으로 파싱하여 사용할 수 있습니다.

REST API의 특징

API(Application Programming Interface)

  • 서버-클라이언트 구조(Server-Client)
    REST API는 클라이언트와 서버가 분리되어 있으며, 서로 독립적으로 발전할 수 있는 아키텍처를 지향합니다. 클라이언트는 서버와 상호 작용할 때 서버의 내부 구조를 알 필요가 없으며, 서버도 클라이언트의 내부 구조를 알 필요가 없습니다.

  • 무상태(Stateless)
    REST API는 상태를 유지하지 않습니다. 클라이언트의 모든 요청에 대해 서버는 새로운 상태로 처리하며, 이전 요청의 상태 정보를 저장하지 않습니다. 이를 통해 서버의 부하를 줄이고, 서버의 확장성을 높일 수 있습니다.

  • 캐시 처리 가능(Cacheable)
    REST API는 캐시 처리를 가능하게 합니다. 클라이언트는 서버에서 반환된 응답을 캐싱하여 동일한 요청이 있을 경우 서버에 요청하지 않고 캐시된 응답을 사용할 수 있습니다. 이를 통해 네트워크 대역폭을 줄이고, 성능을 향상시킬 수 있습니다.

  • 계층화(Layered System)
    REST API는 계층화된 아키텍처를 지원합니다. 즉, 서버는 여러 개의 계층으로 구성될 수 있으며, 클라이언트는 서버의 구조를 알 필요 없이 중간 계층에 요청을 보낼 수 있습니다.

  • 인터페이스 일관성(Uniform Interface)
    REST API는 인터페이스의 일관성을 제공합니다. 즉, 모든 리소스에 대해 공통된 인터페이스가 제공됩니다. 이를 통해 클라이언트는 서버에 요청할 때 사용하는 메서드, URI 등의 인터페이스를 예측할 수 있습니다. 이러한 인터페이스 일관성은 서비스의 가용성과 재사용성을 높이며, 코드의 가독성과 이해도를 향상시킵니다.

RMM(Richardson Maturity Model)

RMM은 리처드슨(Richardson)이 고안해낸 REST API의 성숙도 모델입니다.
성숙도 모델은 총 4단계로 나누어져서 있으며, 각 단계의 조건에 만족할 수록 REST API에 가까워집니다. 보통 LV2까지 충족 하면 RESTful API라 부르며,REST API설계 시 LV3(HATEOAS)을 적용 시키기 어려운 부분이 있습니다.
Richardson Maturity Model

  • POX(Plain Old XML): HTTP를 단순한 전송 프로토콜로만 사용합니다. 이 경우, 해당 API를 REST API라고 할 수는 없습니다, 0단계는 REST API를 작성하기 위한 기본 단계입니다.

  • Resources: 각각의 리소스는 고유한 URI를 갖습니다. 모든 자원은 개별 리소스에 맞는 엔드포인트(Endpoint)를 사용해야하며 요청하고 받는 자원에 대한 정보를 응답으로 전달해야 합니다.

  • HTTP Verbs: HTTP 메소드(GET, POST, PUT, DELETE)를 사용하여 리소스를 다룹니다.

  • HATEOAS(Hypermedia As The Engine Of Application State): 리소스 사이에 하이퍼미디어 링크를 사용하여 API를 조작할 수 있습니다. 이 단계는 Hypermedia Controls라고도 합니다.

마치며

REST API는 HTTP 프로토콜을 기반으로 하며, 네트워크를 통해 클라이언트와 서버 간 통신을 수행합니다. RMM을 사용하여 REST API의 성숙도를 높이고, 클라이언트와 서버 간의 상호 작용을 단순화할 수 있습니다.

참고자료 출처

[네트워크]REST API란? REST, RESTful이란? - 히진쓰의 서버사이드 개발 블로그
REST API 제대로 알고 사용하기 -nhncloud
REST API 성숙도 모델 (Maturity Model) [Richardson Maturity Model] -tstory Jae Honey

0개의 댓글