REST API란?

기가진이·2023년 5월 17일
1

개념정리

목록 보기
2/2
post-thumbnail

API

Application Programming Interface(API)다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙을 정의한다.


💻 개발자는 다른 애플리케이션이 프로그래밍 방식으로 애플리케이션과 통신할 수 있도록 API를 표시하거나 생성한다.

  • 예를 들어, 근무 시간 기록 애플리케이션은 직원의 전체 이름과 날짜 범위를 요청하는 API를 표시한다. 이 정보가 수신되면 내부적으로 직원의 근무 시간 기록을 처리하고 해당 날짜 범위에서 근무한 시간을 반환한다.

💡 웹 API는 클라이언트와 웹 리소스 사이의 게이트웨이라고 생각할 수 있다.💡

클라이언트

클라이언트는 웹에서 정보에 접근하려는 사용자이며, API를 사용하는 사람이거나 소프트웨어 시스템일 수 있다.

리소스

리소스는 애플리케이션이 클라이언트에게 제공하는 정보이다. 즉, http 요청의 대상이다. 리소스는 이미지, 동영상, 텍스트, 숫자 또는 모든 유형의 데이터일 수 있다. 클라이언트에 리소스를 제공하는 시스템을 서버라고도 한다.



REST: REpresentational State Transfer

  • 웹 브라우저가 웹 서버에 접속하면 웹 애플리케이션
    • 예를 들어 두 명의 사용자가 각각 자신의 웹 브라우저로 같은 웹 서버에 접속한다면, 두 개의 웹 애플리케이션이 실행되고 있는 것!
    • a 웹페이지에서 b 웹페이지로 가는 링크를 클릭 → 웹 애플리케이션의 상태가 변경된 것이고, 이 상태의 변경은 representation의 transfer을 통해 이루어짐 ⇒ 이것이 REST
    • 주의할 점
      • Transfer는 상태의 전이를 의미하는 것이 아니라 network component 사이에서의 전송을 말한다. ⇒ 서버에서 클라이언트로의 웹 페이지 전송을 의미하는 것!
      • representation: 어떤 리소스의 특정 시점의 state를 반영하고 있는 정보
      • 애플리케이션의 상태: 웹 애플리케이션이 웹페이지 A를 렌더링하다가 B를 렌더링하는 것으로 바뀐 상태

  • REST: 자원을 이름(자원의 표현)으로 구분해 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다.

    즉, 자원(resource)의 표현(representation)에 의한 상태 전달을 뜻한다.



REST 구성

  • 자원: URI
  • 행위: HTTP Method
  • 표현: Representations



REST API 디자인 가이드

REST API 설계 시 가장 중요한 항목

  • URI는 정보의 자원을 표현해야 한다.
  • 자원에 대한 행위는 HTTP Method(GET, POST, PUT, PATCH, DELETE)로 표현한다.
    • 행위(Method)는 URI에 포함하지 않는다.



REST의 특징

1) Uniform (유니폼 인터페이스)

: URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일

  • 아키텍처 스타일: 그 스타일을 따르는 아키텍처가 지켜야 하는 제약조건들의 집합

2) Stateless (무상태성)

: 작업을 위한 상태 정보를 따로 저장하고 관리하지 않아서 API 서버는 들어오는 요청만을 단순히 처리하면 된다. ⇒ 서비스의 자유도가 높아지고 서버에서 불필요한 정보를 관리하지 않음으로써 구현이 단순해진다.

3) Cacheable (캐시 가능)

: HTTP라는 기존 웹표준을 그대로 사용하는 특징을 가지고 있어서 캐싱 기능을 적용하는 것이 가능하다.

4) Client - Server 구조

: REST 서버는 API 제공, 클라이언트는 사용자 인증이나 컨텍스트 (세션, 로그인 정보) 등을 직접 관리하는 구조로 각각의 역할이 확실히 구분된다. → 서로의 의존성이 줄어들게 된다.

5) 계층형 구조

: 다중 계층으로 구성될 수 있다.



HTTP에서의 representation

  • GET 메서드의 정의: target resource에 대한 현재의 선택된 representation 하나를 반환한다.

EX)

  • GET으로 요청을 서버에 보낸다.
  • 서버에서 hello라는 리소스를 응답으로 보낸다.
  • 근데 여기서 hello는 리소스가 아니라 representation data이다? 이게 무슨소리일까?
  • 리소스는? 앞에서도 언급했다시피 http 요청의 대상이다.
  • 그렇다면 representation data는? 앞에서도 언급했다시피 어떤 리소스의 특정 시점의 상태를 반영하고 있는 정보를 뜻한다.

⇒ 서버가 응답으로 주는건 representation data고, 리소스는 ‘환영의 의미를 담은 문서’를 말한다.



결론

웹 애플리케이션의 상태의 변경은 representation의 transfer을 통해 이루어지는 것이 REST이고, REST 아키텍처 스타일을 따르는 API를 REST API라고 한다.

  • 추가: REST의 설계 규칙을 잘 지켜서 설계된 API를 RESTful API라고 한다.



출처

https://aws.amazon.com/ko/what-is/restful-api/

https://dev-coco.tistory.com/97

https://blog.npcode.com/2017/04/03/rest의-representation이란-무엇인가/

profile
개발 learning중. . .

0개의 댓글