본문 바로가기
TIL/잡학다식

[잡학다식] RESTful API - REST API

by 죠르띠에 2022. 8. 4.

저번 시간엔 API에 대해 알보았고, 이제 REST API에 대해 알아보자.

 

아래에 정리된 내용들은 AWS에서 가져왔음을 밝힌다.

 

RESTful API란 무엇인가? - RESTful API 초보자 가이드 - AWS

 

aws.amazon.com

 

REST API가 뭘까

두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스

REST 아키텍처 스타일을 따르는 API를 REST API라고 한다. REST 아키텍처를 구현하는 웹 서비스를 RESTful 웹 서비스라고 한다. RESTful API라는 용어는 일반적으로 RESTful 웹 API를 나타낸다. REST API와 RESTful API는 같은 의미로 사용할 수 있다.

 

REST가 뭘까

Representational State Transfer의 약자이고, API작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처이다. REST는 처음에 인터넷과 같은 복잡한 네트워크에서 통신을 관리하기 위한 지침으로 만들어졌다. REST 기반 아키텍처를 사용하여 대규모의 고성능 통신을 안정적으로 지원할 수 있다.

REST 아키텍처 스타일

균일한 인터페이스

모든 RESTful 웹 서비스 디자인의 기본이다. 서버가 표준 형식으로 정보를 전송함을 나타낸다.

균일한 인터페이스에는 4가지 아키텍처 제약 조건이 있다.

  1. 요청은 리소스를 식별해야한다. 이를 위해 균일한 리소스 식별자를 사용한다.
  2. 클라이언트는 원하는 경우 리소스를 수정하거나 삭제하기에 충분한 정보를 리소스 표현에서 가지고 있다.
  3. 클라이언트는 표현을 추가로 처리하는 방법에 대한 정보를 수신한다.
  4. 클라이언트는 작업을 완료하는 데 필요한 다른 모든 관련 리소스에 대한 정보를 수신한다.

무상태

REST 아키텍처에서 무상태는 서버가 이전의 모든 요청과 독립적으로 모든 클라이언트 요청을 완료하는 통신 방법을 나타낸다. 클라이언트는 임의의 순서로 리소스를 요청할 수 있고 모든 요청은 무상태이거나 다른 요청과 분리된다.

계층화

계층화된 시스템 아키텍처에서 클라이언트는 클라이언트와 서버 사이의 다른 승인된 중개자에게 연결할 수 있으며 여전히 서버로부터 응답을 받는다. 서버는 요청을 다른 서버로 전달할 수도 있다.

캐시

서버 응답 시간을 개선하기 위해 클라이언트 또는 중개자에 일부 응답을 저장하는 프로세스인 캐싱을 지원한다. RESTful 웹 서비스는 캐시 가능 또는 캐시 불가능으로 정의되는 API 응답을 사용하여 캐싱을 제어한다.

온디맨드 코드

서버는 소프트웨어 프로그래밍 코드를 클라이언트에 전송하여 클라이언트 기능을 일시적으로 확장할 수 있다.

 

REST API의 장점

확장성

REST API를 구현하는 시스템은 REST가 클라이언트-서버 상호 작용을 최적화하기 때문에 효율적으로 크기 조정할 수 있다.

유연성

완전한 클라이언트-서버 분리를 지원한다. 각 부분이 독립적으로 발전할 수 있도록 다양한 서버 구성 요소를 단화하고 분리한다.

독립성

사용되는 기술과 독립적이다. API 설계에 영향을 주지 않고 다양한 프로그래밍 언어로 클라이언트 및 서버 애플리케이션을 모두 작성할 수 있다. 그리고 통신에 영향을 쥦 않고 양쪽의 기본 기술을 변경할 수 있다.

 

REST API 요청에 포함되는 내용

고유 리소스 식별자

서버는 고유한 리소스 식별자로 각 리소스를 식별한다. REST 서비스의 경우 서버는 일반적으로 URL을 사용하여 리소스 식별을 수행한다.

메서드

HTTP를 사용하려 구현한다면 HTTP 메서드를 사용하여 리소스에 수행해야 하는 작업을 서버에 알려준다. HTTP 메서드에는 GET, POST, PUT, DELETE 등이 있다.

HTTP 헤더

클라이언트와 서버 간에 교환되는 메타데이터이다. 요청 헤더는 요청 및 응답의 형식을 나타내고 요청 상태 등에 대한 정보를 제공한다.

 

REST API 응답에 포함되는 내용

상태 표시줄

요청 성공 또는 실패를 알리는 3자리 상태 코드가 있다. 2XX 코드는 성공, 4XX 및 5XX 코드는 오류, 3XX 코드는 URL 리디렉션을 나타낸다.

메시지 본문

응답 본문에는 리소스 표현이 포함된다. 서버는 요청 헤더에 포함된 내용을 기반으로 적절한 표현 형식을 선택한다. 클라이언트는 데이터 작성 방식을 일반 텍스트로 정희하는 XML 또는 JSON 형식으로 정보를 요청할 수 있다.

헤더

응답에 대한 헤더 또는 메타데이터도 포함된다. 응답에 대한 추가 컨텍스트를 제공하고 서버, 인코딩, 날짜 및 콘텐츠 유형과 같은 정보를 포함한다.

 

 

느낀점

REST API에 대해서 간략하게 정리해본다고 정리한건데 생각보다 양이 많다. 확실히 API보다 제약 조건이 많고 충족할 것들이 많다. 역시 여태까지 만들어 왔던 것들은 그냥 API(HTTP API)였다.

REST API에 대해 다른 문서를 찾게 된다면 그 문서를 참고해서 또 작성해 볼 예정이다. 백엔드 개발자를 희망하면서 계속해서 PUSH를 해줘야할 개념이란 것을 확실히 느꼈다.