[면접 질문] RESTful API란?

TraceofLight·2023년 5월 21일
0

InterviewStudy

목록 보기
2/11

RESTful API

RESTful한 API를 말한다.

굉장히 당연한 말이지만 말 그대로이다!
그렇다면 각 단어의 뜻을 살펴본다면 RESTful API가 뭐하는 친구인지 알 수 있을 것이다.

API

Application Programming Interface의 약자.
정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘.

이렇게 정의하고 있다. 내 방식대로 이해해보자면 소프트웨어의 구성 요소들끼리도 오브젝트 따위를 다루는 방식이 다 다르기 때문에 이 괴리를 처리하기 위해 규약을 정하여 서로 통신, 상호작용할 수 있도록 한 것을 말한다고 보면 될 것이다.

REST

Representational State Transfer의 약자.
World Wide Web 등의 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처 중 하나.

REST는 처음에 인터넷과 같은 복잡한 네트워크에서 통신을 관리하기 위한 지침으로 만들어졌고 대규모 통신에서 안정적인 지원이 가능하다고 하며 구현 및 수정도 용이하다.

REST 아키텍처의 원칙

  • 균일한 인터페이스 (Uniform Interface)

    • 서버가 표준 형식으로 정보를 전송함
    • 표준 형식이 서버 내 리소스의 내부 표현과 다를 수 있음
    • 동일한 리소스에 대한 모든 API 요청은 특정 언어, 플랫폼에 관계없이 동일
  • 무상태 (Stateless)

    • 각 요청은 다른 모든 요청에 대해 독립적
    • 서버가 추가적인 정보 없이 요청을 완전히 이해하고 이행할 수 있음
  • 계층화 시스템 (Layered System)

    • 클라이언트 요청을 이행하기 위해 함께 작동하는 다양한 애플리케이션이 존재
    • 다중 계층으로 서버를 구성, 서버와 클라이언트 사이에도 다른 승인된 중개자가 존재할 수 있음
    • 프록시, 게이트웨이 등의 중간 매체, 암호화, 로드밸런싱 계층 등이 추가될 수 있음
    • 클라이언트에 보이지 않는 상태로 유지됨
  • 캐시 가능성 (Cacheable)

    • 서버 응답 시간을 개선하기 위해 일부 응답을 저장하는 캐싱을 지원
    • 클라이언트 혹은 서버 측에서 캐싱을 구현함
  • 온 디맨드 코드 (On Demand Code)

    • 일반적으로 정적인 리소스를 전송
    • 필요에 따라 실행 코드를 응답에 포함, 클라이언트 기능을 일시적으로 확장하거나 사용자 지정할 수 있음

RESTful API의 사용 이점

  • 확장성

    • 클라이언트 - 서버 간 상호 작용을 최적화하므로 크기를 조정할 수 있음
  • 유연성

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

    • 사용되는 기술과 독립적
    • API 설계와 관계 없이 다양한 프로그래밍 언어를 사용하여 클라이언트 & 서버 애플리케이션을 작성 및 기술을 변경할 수 있음

정리

RESTful API란?
REST 아키텍처를 사용한 애플리케이션 프로그래밍 인터페이스를 말하는 것으로 REST 아키텍처의 원칙을 준수한 프로그램 간의 상호 작용을 정리한 규약이다.

그래서 어떤 이점이 있는데?
해당 API를 사용하게 될 경우 확장성, 유연성, 독립성에서 이득이 있다고 할 수 있다!

참고

[AWS] RESTful API란 무엇인가요?

profile
24시간은 부족한 게 맞다

0개의 댓글