Post

REST API

1. REST API(Representational State Transfer Application Programming Interface)란?

▶ REST API는 현대 웹 서비스의 핵심 구성 요소 중 하나로, 시스템 간의 상호 작용을 간편하고 일관되게 만들어주는 소프트웨어 스타일입니다. REST API는 웹 기반 애플리케이션 간에 데이터를 주고받는 데 사용되며, HTTP를 통해 통신합니다. 오늘은 이러한 REST API의 주요 개념과 원칙에 대해 한번 알아보도록 하겠습니다.

2. REST API의 주요 원칙

  1. 클라이언트-서버 구조
    클라이언트와 서버는 서로 독립적으로 작동합니다. 이 과정에서 클라이언트는 사용자 인터페이스와 관련된 작업을 수행하고, 서버는 데이터 저장 및 비즈니스 로직 처리를 담당하는데, 이 구조는 시스템의 확장성을 높이고 각 부분을 독립적으로 개발 및 배포할 수 있게 합니다.
  2. 무상태성(stateless)
    REST API는 무상태성을 유지해야 합니다. 즉, 각 요청은 서로 독립적이며, 서버는 이전 요청의 상태를 저장하지 않습니다. 모든 필요한 정보는 요청에 포함되어야 하며, 이로 인해 서버의 확장성이 향상됩니다.
  3. 캐시 가능성
    HTTP의 캐시 메커니즘을 활용하여 응답을 캐시할 수 있습니다. 이를 통해 성능을 최적화하고 네트워크 사용량을 줄일 수 있습니다.
  4. 일관된 인터페이스
    REST API는 일관된 인터페이스를 제공해야 합니다. 이는 URI(Uniform Resource Identifier), HTTP 메서드(GET, POST, PUT, DELETE 등), 그리고 표준 응답 코드(200, 404, 500 등)를 일관되게 사용함으로써 이루어집니다.
  5. 계층형 시스템
    클라이언트는 서버와 직접 통신하는 대신, 중간 서버(예: 프록시, 게이트웨이)를 통해 통신할 수 있습니다. 이를 통해 시스템의 보안, 로드 밸런싱 및 기타 기능을 추가할 수 있습니다.
  6. 코드 온 디맨드(선택 사항)
    서버는 클라이언트에게 실행 가능한 코드를 전송할 수 있으며, 이를 통해 클라이언트 기능을 확장할 수 있습니다. 예를 들어, 자바스크립트 코드를 클라이언트에 보내어 실행할 수 있습니다.

3. REST API의 구성 요소

  1. 리소스
    모든 데이터는 리소스로 표현되며, 각 리소스는 고유한 URI를 가집니다. 예를 들어, 사용자 정보는 /users라는 URI로 접근할 수 있습니다.
  2. HTTP 메서드
    REST API는 다양한 HTTP 메서드를 사용하여 리소스에 대한 작업을 수행하는데 해당 메서드는 아래와 같습니다.
    • GET: 리소스를 조회합니다.
    • POST: 새로운 리소스를 생성합니다.
    • PUT: 기존 리소스를 업데이트합니다.
    • DELETE: 리소스를 삭제합니다.
    • PATCH: 리소스의 일부를 수정합니다.
  3. 헤더와 상태 코드
    요청과 응답은 헤더를 통해 메타데이터를 전달합니다. 예를 들어, Content-Type 헤더는 응답의 데이터 형식을 지정하고, 상태 코드는 요청의 성공 여부를 나타내며, 200(성공), 404(찾을 수 없음), 500(서버 오류) 등이 있습니다.

4. REST API의 장점

  1. 확장성
    클라이언트와 서버의 역할이 분리되기 때문에 시스템 확장성이 높아집니다. 이 때, 서버는 여러 클라이언트와 통신할 수 있고 클라이언트는 다양한 서버에서 데이터를 가져올 수 있습니다.
  2. 유연성
    REST API는 다양한 데이터 형식을 지원합니다. JSON, XML, HTML 등 여러 포맷으로 데이터를 주고받을 수 있어 유연합니다.
  3. 사용의 용이성
    REST API는 HTTP 프로토콜을 기반으로 하기 때문에 웹 개발자가 쉽게 이해하고 사용할 수 있습니다. 또한, 많은 프레임워크와 라이브러리가 REST API를 지원하여 개발 속도를 높입니다.
  4. 인터넷 표준 준수
    HTTP 표준을 준수하기 때문에 보안, 인증, 암호화와 같은 표준 기술을 활용할 수 있습니다.

5. REST API의 단점

  1. 복잡성
    대규모 시스템에서는 REST API 설계와 관리가 복잡해질 수 있습니다. 특히 다양한 클라이언트 요구가 많을 경우엔 이를 모두 충족시키기 어려울 수 있습니다.
  2. 성능
    무상태성으로 인해 동일한 데이터를 여러 번 요청할 경우 성능 저하가 발생할 수 있습니다. 이를 해결하기 위해 캐싱 메커니즘을 적절히 사용해야 합니다.
  3. 표준의 한계
    REST는 하나의 소프트웨어 스타일일 뿐 구체적인 구현 표준은 아닙니다. 따라서 개발자마다 다른 방식으로 구현할 수 있어 일관성 유지가 어려울 수 있습니다.


이렇게 오늘은 REST API에 대해 알아봤는데요,
헷갈리기 쉬운 개념인만큼 면접에서도 충분히 나올 수 있는 질문이기 때문에 미리 공부해두면 좋을 것 같네요! 그렇다면 저는 다음에 또다른 면접에 대비한 내용을 들고오도록 하겠습니다 😁!

This post is licensed under CC BY 4.0 by the author.