[Web] REST API

2022. 10. 26. 22:47·Programming/Web
728x90

REST API

REST 또는 RESTful이라는 용어는 2000년 로이 필딩(Roy Fielding)의 박사 학위 논문에서 처음 제안된 것으로, 네트워크상에서 클라이언트와 서버 사이의 통신을 구현하는 방법에 대한 아이디어다. 클라이언트가 서버로 요청을 보냈을 때 서버가 응답으로 보내주는 Resource(예 : 파일, 프로그램 호출 등)의 상태를 Representation이라 정의하고 하나의 Resource는 여러 형태의 Representation(예: json, xml, text, rss)으로 전달할 수 있다는 개념을 의미한다.

REST API의 개념

REST API의 등장 배경

서로 다른 시스템에서 네트워크(인터넷)를 통해 데이터를 주고받기 위한 클라이언트-서버 프로그램 구조는 일반적으로 다음과 같은 문제점이 있다.

  • 동시 다중 접속에 대한 안정성, 보안, 백업, 장애 대응, 이중화 등 여러 기술적 문제를 자체적으로 해결할 수 있는 역량과 고수준의 개발자와 서버 엔지니어가 필요하다.
  • 클라이언트와의 통신을 위해 요청, 응답, 메시지 규격 등 프로토콜을 자체적으로 정의해야 한다.
  • 전용 프로토콜 사용으로 서비스 간 호환이 어렵다.

이러한 전통적인 클라이언트-서버 방식의 문제는 사실 웹을 사용하는 것으로 상당 부분 해결이 개능하다.

  • 웹은 오랜 기간 검증된 서버 소프트웨어를 통해 안전성, 보안, 백업 등의 모든 솔루션을 갖추고 있다.
  • HTTP 프로토콜 사용으로 호환성 제공이 가능하다.
  • 자바, 서블릿 등 다양한 서버 측 프로그래밍 기술을 그대로 사용할 수 있다.

이처럼 대부분의 문제가 웹을 사용하는 것으로 해결될 수 있다. 그러나 웹은 기본적으로 클라이언트 요청에 대한 응답으로 화면 중심의 HTML을 제공하는 시스템이기 때문에 단순히 데이터를 주고받고자 하는 서비스에는 적합하지 않다.

물론 웹을 데이터 서비스 구현에 활용하려고 하는 시도는 꾸준히 있었으며 소위 'XML 웹 서비스'라는 개념이 한동안 많이 사용되었다. 다만 구현을 위해 추가적인 레지스트리(Registry)와 UDDI(Universal Description, Descovery and Integration), SOAP(Simple Object Access Protocol), WSDL(Web Service Description Language)과 같은 규격을 사용해야 하기 때문에 접근성도 떨어지고 구현 과정도 다소 복잡한 문제가 있다.

 

만일 스마트폰이 등장하지 않았다면 'XML 웹 서비스'로도 충분했겠지만 스마트폰의 폭발적인 성장은 많은 것을 바꿔놓게 된다. 비교적 느린 인터넷과 비싼 데이터 요금의 모바일 인터넷 환경에서는 전통적인 웹이나 XML 웹 서비스 형태는 적합하지 않았다.

이에 따라 확장성이 뛰어나고 경량의 데이터 구조라고 할 수 있는 JSON이 주목을 받기 시작했다. JSON은 JavaScript Object Notation의 약어로, 그 자체로 자바스크립트 객체 구조를 가지고 있어 웹 브라우저에서 바로 이해할 수 있고 처리 가능한 구조라는 특징이 있다. 이와 함께 RESTful 개념이 재조명되어 본격적으로 적용되기 시작해 지금의 프론트엔드 중심 개발을 이끌게 되었다.

 

REST는 현재 HTTP와 JSON을 함께 사용하여 Open API를 구형하는 형태로 많이 사용되고 있으며 대부분의 Open API는 REST 아키텍처를 기반으로 만들어져 있다. 일반적으로 REST원칙을 따르는 시스템을 RESTful이라 하며 웹 기반으로 구현된 서비스이므로 RESTful 웹 서비스라고 이야기한다.

 

Open API는 인터넷을 통해 제공되는 데이터 서비스의 인터페이스로, 일반적인 프로그램에서의 API가 클래스 라이브러리 형태로 제공되는 것에 비해 웹을 사용하기 때문에 URI 구조를 가지고 있으며 응답 메시지로는 주로 JSON을 사용한다.

REST, RESTful API라는 용어 자체는 정해진 규격이나 표준이 아닌 일종의 구현 원칙이라고 볼 수 있다. 관련 표준으로는 OAS(Open API Specification)가 있으며 이는 RESTful 웹 서비스를 약속된 규칙에 따라 JSON과 YAML 형식의 API 규격으로 표현하기 위한 표준 규격이다.

'Programming > Web' 카테고리의 다른 글

[Web] REST 클라이언트  (0) 2022.10.27
[Web] JAX-RS  (0) 2022.10.26
[Web] 필터(Filter)  (0) 2022.10.26
[Web] 리스너(Listener)  (0) 2022.10.26
[Web] JDBC 기본구조와 API의 이해  (1) 2022.10.26
'Programming/Web' 카테고리의 다른 글
  • [Web] REST 클라이언트
  • [Web] JAX-RS
  • [Web] 필터(Filter)
  • [Web] 리스너(Listener)
arajo
arajo
  • arajo
    아라 메모장
    arajo
  • 전체
    오늘
    어제
    • 분류 전체보기 (509)
      • Language (298)
        • HTML (55)
        • CSS (11)
        • JavaScript (70)
        • TypeScript (8)
        • Python (33)
        • Java (119)
        • C (0)
        • C# (2)
      • Programming (92)
        • Programming (14)
        • Web (51)
        • Apache (1)
        • MySQL (23)
        • AWS (3)
      • Framework | Library (26)
        • Framework | Library (3)
        • Vue.js (2)
        • React.js (5)
        • React Native (4)
        • Node.js (1)
        • Ajax (1)
        • Bootstrap (8)
        • Spring (1)
        • Flutter (1)
      • etc (2)
      • 휴식 (19)
        • 책 (13)
        • 일기 (5)
        • 게임 일기 (1)
      • A (71)
        • 공부 (18)
        • 기타 (6)
        • 일 (47)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    자바스크립트
    next.js
    객체
    MySQL
    web
    array
    파이썬
    react
    JavaScript
    TypeScript
    CSS
    타입스크립트
    리액트
    Java
    제어문
    변수
    event
    Python
    HTML
    object
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
arajo
[Web] REST API
상단으로

티스토리툴바