[Spring] REST API

JeongEun Kim·2023년 4월 28일
0

Spring

목록 보기
7/8

OPEN API(Application Programming Interface)

  • 프로그래밍에서 사용할 수 있는 개방되어 있는 상태의 인터페이스
  • naver, kakao 등 포털 서비스 사이트나 통계청, 기상청, 우체국 등과 같은 포털 서비스 사이트나 통계청, 기상청, 우체국 등과 같은 관공서, 공공 데이터 포털이 가지고 있는 데이터를 외부 응용 프로그램에서 사용할 수 있도록 OPEN API를 제공하고 있다.
  • OPEN API와 함께 거론되는 기술이 REST이며, 대부분의 OPEN API는 REST 방식으로 지원된다.



REST(Representational State Transfer)

REST란?

자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것

  • 2000년도 로이 필딩(Roy Fielding)의 박사학위 논문에 최초로 소개됨.
  • REST는 'Representational State Transfer'의 약어로 하나의 URI는 하나의 고유한 리소스(Resource)를 대표하도록 설계된다는 개념에 전송방식을 결합해 원하는 작업을 지정한다.
  • 웹의 장점을 최대한 활용할 수 있는 아키텍처(설계구조)로써 REST를 발표하였다.
  • HTTP URI를 통해 제어할 자원(Resource)를 명시하고, HTTP Method(GET, POST, PUT, DELETE)를 통해 해당 자원(Resource)를 제어하는 명령을 내리는 방식의 아키텍처이다.

REST 구성

  • 자원 (Resource) - URI
  • 행위 (Verb) - HTTP Method
  • 표현 (Representations)

잘 표현된 HTTP URI로 리소스를 정의하고 HTTP method로 리소스에 대한 행위를 정의한다. 리소스는 JSON, XML과 같은 여러 언어로 표현 가능하다.


REST 원칙

  1. 균일한 인터페이스
    서버가 표준 형식으로 정보를 전송한다. 형식이 지정된 리소스를 REST 내에서 표현이라고 부른다.
  2. 무상태
    작업을 위한 상태정보를 따로 저장하고 관리하지 않는다. 세션 정보나 쿠키 정보를 별도로 저장하고 관리하지 않기 때문에 API 서버는 들어오는 요청만을 단순히 처리하면 되기 때문에 서비스의 자유도가 높아지고 구현이 단순해진다.
  3. 계층화 시스템
    다중 계층으로 구성될 수 있으며 보안, 로드 밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있다. PROXY, 게이트웨이 같은 네트워크 기반의 중간매체를 사용할 수도 있다.
  4. 캐시 가능성
    HTTP 웹표준을 그대로 사용하기 때문에 웹에서 사용하는 기본 인프라를 그대로 활용이 가능하다. 따라서 HTTP가 가진 캐싱 기능을 적용할 수 있다.
  5. 온디맨드 코드
    클라이언트가 리소스에 대한 표현을 처리하는 방법에 대한 Code를 서버가 제공하는 것을 의미한다. HTML 내의 javascript가 대표적인 예시이다.

기존 Service와 REST Service 비교

  • 기존 Service : 요청에 대한 처리를 한 후, 가공된 data를 이용하여 특정 플랫폼에 적합한 형태의 View로 만들어 반환함.
  • REST Service : data 처리만 한다거나, 처리 후 반환될 data가 있다면 JSON이나 XML 형식으로 전달한다. View에 대해서는 신경 쓸 필요가 없어 OPEN API에서 많이 사용한다.



REST API

API란?

Application Progrmming Interface는 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙을 정의한다. 개발자는 다른 애플리케이션이 프로그래밍 방식으로 애플리케이션과 통신할 수 있도록 API를 표시하거나 생성한다. 웹 API는 클라이언트와 웹 리소스 사이의 게이트웨이라고 생각할 수 있다.


REST API란?

두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스. REST 형식을 따르는 API를 의미한다.


기존 웹 접근 방식과 REST API 방식의 차이

  • 기존의 블로그 등은 GET과 POST 만으로 자원에 대한 CRUD를 처리, URI는 액션을 나타냄
  • REST로 변경할 경우 4가지 method를 모두 사용하여 CRUD 처리, URI는 제어하려는 자원 나타냄

RESTful API의 장점

  • 확장성
    REST가 클라이언트-서버 상호 작용을 최적화하기 때문에 효율적으로 크기를 조정할 수 있다.
  • 유연성
    완전한 클라이언트-서버 분리를 지원해 각 부분이 독립적으로 발전할 수 있도록 서버 구성 요소를 단순화, 분리한다.
  • 독립성
    사용되는 기술과 독립적이다. API 설계에 영향을 주지 않고 다양한 프로그래밍 언어로 클라이언트 및 서버 애플리케이션을 모두 작성할 수 있다.

REST API 설정 방법

Jackson library

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
		<groupId>com.fasterxml.jackson.core</groupId>
		<artifactId>jackson-databind</artifactId>
		<version>${jackson-databind-version}</version>
</dependency>

REST 관련 Annotation

0개의 댓글