CS와 면접

REST API

숲별 2023. 3. 28. 01:16
728x90
더보기

REST API란 무엇인가요? (모두가 답변)

프로젝트에 REST API를 사용한 이유가 무엇인가요? (프로젝트에 REST API를 사용하셨을 경우에만 추가 답변),

REST API 말고 다른 비교할만한 것을 알고 있나요?

 

API(Application Programming Interface)란?

  • 컴퓨터의 기능을 실행시키는 방법을 의미함( ex. 'HELLO WORLD'를 프린트하는 것)
  • 회원가입, 로그인, 게시글 작성 등 모두 제각기 특정 기능을 담당하고 있는 하나하나가 API임

 

REST(Representational State Transfer) API

  • REST의 특징을 기반으로 서비스 API를 구현한 것
  • REST API도 컴퓨터의 기능을 실행시키는 명령, 다만 내 컴퓨터가 아니라 남의 컴퓨터를 실행시킴.
  • 웹 서비스를 위한 아키텍처 스타일 중 하나로 HTTP 프로토콜을 사용하여 클라이언트와 서버 간에 통신하는 방식.
  • 간결하고 가볍고 확장성이 뛰어나며, HTTP를 지원하는 모든 플랫폼에서 쉽게 구현 가능.

인터넷과 웹을 통해 컴퓨터를 제어할 때 어떻게 하면 실행착오를 줄이고 더 좋은 API를 만들 수 있느냐에 대한 고민의 결과물이며 특정 기술을 의미하는 게 아니라, HTTP를 통해서 기계들이 통신을 할 때, HTTP가 가진 잠재력을 최대한 활용할 수 있도록 유도하는 일종의 모범사례.

 

REST API 설계 시 가장 중요한 항목은 다음의 2가지로 요약합니다.

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

이를 통해 데이터 처리를 일관성 있게 하고 서버의 확장성을 높일 수 있습니다.

 

특징

  • 자원(Resource) : URI(Uniform Resource Identifier)로 표현되는 자원에 대한 행위를 HTTP 메서드(GET, POST, PUT, DELETE 등)로 나타냄. 예를 들어, /users URI는 사용자 자원을 나타내며, GET 메서드를 사용하여 사용자 목록을 가져올 수 있음.
  • 표현(Representation) : 자원의 상태를 XML, JSON, HTML 등의 형식으로 전송하며 이를 통해 클라이언트는 서버가 제공하는 자원의 상태를 이해하고 처리할 수 있음.
  • 상태(Stateless) : 클라이언트의 상태를 서버에서 유지하지 않음. 이를 통해 서버는 클라이언트의 요청을 독립적으로 처리할 수 있음.
  • 캐시(Cacheable) : HTTP 프로토콜의 캐싱 기능을 사용하여 응답 결과를 캐시할 수 있음. 이를 통해 서버의 부하를 줄이고, 응답 시간 단축 가능.
  • 계층 구조(Layered System) : 서버와 클라이언트 사이에 중간 계층(로드 밸런서, 캐시 등)을 둘 수 있음. 이를 통해 시스템을 확장하고, 보안성을 높일 수 있음.

단점

  • RESTful 한 것에 대한 명확한 표준이 존재하지 않음.
  • RESTful을 완전히 만족하는 API를 만들기는 까다로움.
  • REST API가 분산환경에 적합하지 않음.

REST API 사용한 이유

  • 클라이언트와 서버의 분리 : REST API를 사용하면 클라이언트와 서버 간의 역할을 분리하여 클라이언트와 서버 간에 독립적으로 개발하고, 유지보수가 가능.
  • 다양한 클라이언트 지원 : REST API는 HTTP 프로토콜을 사용하기 때문에, 모든 클라이언트(웹 브라우저, 모바일 앱, 데스크톱 앱 등)에서 사용할 수 있어 서비스의 가용성과 확장성을 높일 수 있음.
  • 캐싱 : REST API는 HTTP 프로토콜의 캐싱 기능을 사용할 수 있습니다. 이를 통해 클라이언트와 서버 간의 트래픽을 줄이고, 성능 향상이 가능.
  • 보안성 : REST API는 SSL(Secure Sockets Layer)과 같은 보안 기술을 사용할 수 있어 데이터의 보안성을 보장함.

 

REST API외에 다른 것(비교대상)

SOAP(Simple Object Access Protocol) API

  • XML기반의 프로토콜
  • 기능이 많음
  • 보안과 오류 처리에 대한 지원이 강화되어 있음(보안성과 신뢰성이 높은 것이 특징)
  • XML형식이 비교적 무거움(메시지의 크기가 크고 복잡하여 처리 속도가 느리다는 단점)
  • 서버에서 제공하는 데이터를 다루는 데 있어서 REST API보다 복잡하고 어려울 수 있음( WSDL(Web Services Description Language)이라는 문서를 제공하여 API의 기능과 사용법을 상세하게 설명이 가능)

GraphQL

  • Facebook에서 개발된 쿼리 언어 및 API 실행 환경
  • 클라이언트가 필요한 데이터를 선택적으로 요청할 수 있는 유연한 쿼리 기능 제공(서버는 그에 대한 응답만 제공하여 불필요한 데이터 전송을 줄이고, 빠른 응답 시간과 유연한 데이터 요청이 가능.)
  • 여러개의 엔드포인트를 호출할 필요 없이 단일 엔드포인트를 통해 데이터를 요청할 수 있음
  • 서버측에서 적절한 쿼리 수준을 유지하는 것이 중요하며, 요청에 대한 오류 처리 필요(서버 측에서는 쿼리를 해석하고 처리하는 추가적인 작업이 필요하다는 단점)

 

 

+추가

REST API와 RESTful API의 차이는 뭘까?

RESTful은 REST의 설계 규칙을 잘 지켜서 설계된 API를 RESTful한 API라고 합니다.

즉, REST의 원리를 잘 따르는 시스템을 RESTful이란 용어로 지칭됩니다.

 

RESTful하게 만든 API는 요청을 보내는 주소만으로도 어떤 것을 요청 하는지 파악이 가능합니다.

 

 

 

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