FOREST_CHOI's BLOG

REST API? 본문

프로그래밍/Spring Boot

REST API?

Forest_Choi 2022. 10. 16. 18:12
728x90

4. REST API

REST?

  -      Representational State Transfer

  -      자원을 이름(표현)으로 구분하여 해당 자원의 상태(정보)를 주고받는 모든 것을 의미

  -      데이터가 요청되어지는 시점에서 자원의 상태를 전달하면 JSON, XML을 통해 데이터를 주고 받는 것이 일반적이다.(최근에 JSON이 우세)

  -      월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 개발 아키텍쳐의 한 형식

  -      REST는 기본적으로 웹의 기존기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일

 

 

REST의 요소

  -      Method(GET, POST, PUT, DELETE)

  -      Resource : 모든 것을 명사로 표현하고, 세부 Resource에는 id를 붙임

  -      Message : 메시지 포멧이 존재(JSON, XML)

 

REST의 특징

  -      Uniform Interface(인터페이스 일관성)

          HTTP 표준만 맞는다면, 어떤 기술도 가능한 Interface스타일

          URL로 지정한 Resource에 대한 조작을 통일되고 한정적인 인터페이스로 수행

  -      Server-Client(서버 클라이언트 구조)

          자원이 있는 쪽이 Server, 자원을 요청하는 쪽이 Client가 된다.

          서로 간 의존성이 줄어든다

  -      Stateless(무상태성)

          HTTP 프로토콜은 Stateless Protocol이므로 REST역시 무상태성이다.

          ClientcontextServer에 저장하지 않는다.

          Server는 각각의 요청을 별개의 것으로 인식하고 처리한다.

  -      Cacheable(캐시 처리 가능)

          웹 표준 HTTP 프로토콜을 그대로 사용하므로 웹에서 사용하는 기존의 인프라를 그대로 활용할 수 있다.

          대량의 요청을 효율적으로 처리하기 위해 캐시가 요구된다.

          캐시 사용을 통해 응답시간이 빨라지고 REST Server트랜잭션이 발생하지 않기 때문에 전체 응답시간, 성능, 서버의 자원 이용률을 향상 시킬 수 있다.

  -      Layered System(계층화)

          ClientREST API Server만 호출한다.

          REST Server는 다중 계층으로 구성될 수 있다.

          vProxy, Gateway 같은 네트워크 기반의 중간 매체를 사용할 수 있다.

 

REST가 필요한 이유

  -      애플리케이션 분리 및 통합

  -      다양한 클라이언트의 등장

  -      최근의 서버 프로그램은 다양한 브라우저와 모바일 디바이스에서도 통신을 할 수 있어야한다

  -      이러한 멀티 플랫폼에 대한 지원을 위해 서비스 자원에 대한 아키텍처를 세우고 이용한 방법을 모색한 결과 REST에 관심을 가지게 되었음

RESTful API의 개념

  -      RESTful API는 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스이다. 대부분 비즈니스 애플리케이션은 다양한 태스크를 수행하기 위해  다른 내부 애플리케이션 및 서드 파티 애플리케이션과 통신해야 한다.

 

RESTful API 사용 시 장점

  -      확장성

          : REST API를 구현하는 시스템은 REST가 클라이언트 서버 상호작용을 최적화 하기 때문에 효율적으로 크기 조정할 수 있다. 무상태는 서버가 과거 클라이언트 요청 정보를 유지할 필요가 없기 때문에 서버 로드를 제거한다. 이러한 모든 기능은 성능을 저하시키는 통신 병목 현상을 일으키지 않으면서 확장성을 지원한다.

  -      유연성

          : RESTful 웹 서비스는 완전한 클라이언트 서버 분리를 지원한다. 각 부분이 독립적으로 발전 할 수 있도록 다양한 서버 구성 요소를 단순화하고 분리한다. 애플리케이션 함수를 계층화 하는 기능은 유연성을 더욱 향상시킨다.

  -      독립성

          : REST API는 사용되는 기술과 독립적이다. API설계에 영향을 주지 않고 다양한 프로그래밍 언어로 클라이언트 및 서버 애플리케이션을 모두 작성할 수 있다. 또한 통신에 영향을 주지 않고 양쪽의 기본 기술을 변경할 수 있다.

 

RESTful API동작

  1.     클라이언트가 서버에 요청을 전송한다. 클라이언트는 API 문서에 따라 서버가 이해하는 방식으로 요청 형식을 지정한다.

  2.     서버가 클라이언트를 인증하고 해당 요청을 수행할 수 있는 권한이 클라이언트에 있는지 확인한다.

  3.     서버가 요청을 수신하고 내부적으로 처리한다.

  4.     서버가 클라이언트에 응답을 반환한다. 응답에는 요청이 성공했는지 여부를 클라이언트에 알려주는 정보가 포함된다.

 

 

JSON, XML 특징

 

XML

  -      XML은 데이터를 저장하고 전달할 목적으로 만들어졌으며, 저장되는 데이터 구조를 기술하기 위한 언어이다.

  -      Extensible Markup Language 의 약자로, 수많은 응용분야에서 데이터를 저장하고 전달하는 중요한 역할을 맡고 있다.

JSON

  -      JavaScript Object Notation의 약자이다.

  -      JSON은 좀 더 쉽게 데이터를 교환하고 저장하기 위하여 만들어진 텍스트 기반의 데이터 교환 표준이다.

  -      JavaScript 기반으로 만들어졌고, Text기반이기 때문에 어떠한 프로그래밍 언어에서도 JSON을 사용하고 읽을 수 있다.

 

JSON vs XML

  -      JSON은 종료태그를 사용하지 않는다.

  -      JSON 구문이 XML 구문보다 짧다.

  -      XML을 배열을 사용할 수 없지만 JSON은 배열을 사용할 수 있다.

  -      XMLXML파서로 파싱되며, JSON은 자바스크립트 표준함수인 eval()함수로 파싱된다.

    * JSON은 전송받은 데이터의 무결성을 사용자가 직접 검증해야 한다. 따라서 데이터의 검증이 필요한 곳에서는 스키마를 사용하여 데이터의 무결성을 검증 할 수 있는 XML을 많이 사용한다

728x90
Comments