RESTful API란 무엇인가?

gyojinnK·2024년 3월 15일
post-thumbnail

어제는 모의면접이 진행되었다.
CS 질문을 많이 받았는데 RESTful API에 대한 질문이 기억에 남는다.
아는 질문이었지만 답변에는 허점이 많았다.
확실하게 내가 알고있는지 점검해보며 TIL를 작성해보자잉

RESTful API

먼저 키워드를 REST와 API로 쪼개보자.

API란?

  • 애플리케이션 프로그래밍 인터페이스(API)는 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙을 정의
  • 개발자는 다른 애플리케이션이 프로그래밍 방식으로 애플리케이션과 통신할 수 있도록 API를 표시하거나 생성

API를 이용해서 클라이언트서버리소스를 공유할 수 있다.
그렇다면 REST는 무엇인가?


REST란?

Representational State Transfer(REST)는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처

  • REST 아키텍처의 스타일을 따르는 API가 바로 REST API

REST 아키텍처에는 몇가지 스타일 원칙있다.


REST 정의

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

  • 자원: 해당 소프르웨어가 관리하는 모든 것
  • 표현: 그 자원을 표현하기 위한 이름
  • 상태 전달: 데이터가 요청되는 시점에 자원의 상태를 전달한다. (ex. JSON/XML)

REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용한다.
-> 웹의 장점을 최대한 활용할 수 있는 아키텍처!


REST의 구성요소

  • 자원(Resource) - URI
    • 모든 자원에는 고유ID 존재 (자원은 서버에 존재)
    • 자원을 구별하는 ID는 '/exgroups/:exgroup_id'와 같은 HTTP URI
    • Client는 URI를 이용해 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 Server에 요청
  • 행위(Verb) - Method
    • HTTP Method 사용
  • 표현(Representation of Resource)
    • Client와 Server가 데이터를 주고받는 형태 (ex. JSON, XML, TEXT, RSS)

REST 아키텍처의 스타일 6원칙

균일한 인터페이스는 모든 RESTful 웹 서비스 디자인의 기본이다. 이는 서버가 표준 형식으로 정보를 전송함을 나타냅니다. 형식이 지정된 리소스를 REST에서 표현이라고 부릅니다. 이 형식은 서버 애플리케이션에 있는 리소스의 내부 표현과 다를 수 있습니다. 예를 들어, 서버는 데이터를 텍스트로 저장하되, HTML 표현 형식으로 전송할 수 있습니다.

  • 클라이언트-서버 구조
    • 사용자 인터페이스와 데이터 스토리지가 분리되어 서로의 진화를 독립적으로 할 수 있다.
  • 균일한 인터페이스
    • 애플리케이션의 아키텍처를 단순화하고 상호작용을 명확하게 한다.
  • 무상태
    • 각 요청은 독립적이며, 서버는 클라이언트의 상태를 저장하지 않는다.
  • 캐시 가능성
    • 응답은 캐시 가능하다고 명시될 수 있고, 이를 통해 상호작용을 향상시킬 수 있다.
  • 계층화된 시스템
    • 클라이언트는 종단 서버와 직접 통신하지 않을 수도 있으며, 중간 서버를 통해 통신할 수 있다.
  • 온디맨드 코드
    • 서버에서 클라이언트로 코드를 전송하여 클라이언트의 기능을 일시적으로 확장할 수 있다.

원칙을 바탕으로 REST API를 뜯어보자.


REST API vs RESTful API

  • REST API
    • REST 아키텍처 스타일을 기반으로 작성된 API
    • 넓은 의미에서 REST 아키텍처 원칙을 기반으로 하는 모든 종류의 API를 포함
    • REST 아키텍처 원칙 준수의 유연성을 갖는다.
  • RESTful API
    • REST 아키텍처의 원칙을 엄격하게 준수
    • REST의 6가지 주요 원칙을 모두 따르는 API

즉, REST API와 RESTful API 사이의 주된 차이는 REST 아키텍처 원칙들의 준수 정도에 있다. 모든 RESTful API는 REST API이지만, 모든 REST API가 엄격한 의미에서 RESTful하다고 볼 수는 없다. RESTful API는 REST의 원칙들을 엄격하게 준수하는 반면, REST API는 이러한 원칙들을 기반으로 하되, 모두를 완전히 준수하지 않을 수 있는 보다 넓은 범주의 API를 포함한다.

profile
기록하고 꺼내보고

0개의 댓글