Programming/Spring

스프링부트 API - REST API 란? 스프링부트로 API만들기

긍정왕웹서퍼 2022. 4. 2. 22:07
728x90

개요

REST API 란 무엇이며, 스프링부트에서 RESTful 한 API를 만들기위해 어떤방식으로 설계및 구현할지 알아보기위해 포스팅합니다.

API 란?

API는 Application Programming Interface의 줄임말로 응용 프로그램에서 사용할 수 있도록 다른 응용 프로그램을 제어할 수 있게 만든 인터페이스를 뜻합니다. API를 사용하면 내부 동작 로직을 알지못해도 정의되어 있는 기능으로 쉽게 사용할 수 있게됩니다.

여기서 Interface란 어떤 장치간에 정보 교환을 위한 수단이나 방법을 의미하며 대표적으로 마우스, 키보드 등이 해당됩니다.

REST 란?

REST는 Representational State Transfer 의 줄임말로 자원의 이름으로 구분하여 해당 자원의 상태를 교환하는 것을 의미하고, 

서버와 클라이언트의 상호 통신 방식중 하나입니다. HTTP URI( Uniform Resource Identifier ) 를 통해 자원을 명시하고 HTTP Method를 통해 자원을 교환하는 것이죠.  * HTTP Method = Create, Read, Update, Delete (CRUD의 기능)

 

REST의 특징(규칙)

  • Server-Client  : 자원이 있는 쪽이 Server, 요청하는 쪽이 Client로 클라이언트와 서버가 독립적으로 분리되어 있어야함
  • Stateless : 요청간에 클라이언트 정보가 서버에 저장되지 않음, 서버는 각각의 요청을 완전히 별개의 것으로 인식하여 처리
  • Cacheable : HTTP 프로토콜을 그대로 사용하기에 HTTP의 특징인 캐싱 기능을 적용하여 대량의 요청을 효율적으로 처리
  • Layered System : 계층화라고 하며, 클라이언트는 서버의 구성과 상관없이 REST API 서버로 요청, 서버는 다중 계층으로 구성될 수 있음 (로드밸런싱, 보안, 캐시 등)
  • Code on Demand (Optional) : 요청을 받으면 서버에서 클라이언트로 코드 또는 스크립트(로직)을 전달하여 클라이언트 기능 확장 
  • Uniform Interface : 인터페이스의 일괄성, 정보가 표준 형식으로 전송되기 위해 구성 요소간 통합 인터페이스를 제공, HTTP 프로토콜을 따르는 모든 플랫폼에서 사용 가능하게끔 설계

REST 장점

  • HTTP 표준 프로토콜을 사용하는 모든 플랫폼에서 사용가능한 높은 호환성
  • 서버와 클라이언트의 역할을 명확하게 분리함으로 구분
  • 여러 서비스 설계에서 생길 수 있는 문제를 API단위로 나누기에 최소화

REST API 란?

REST 아키텍처의 조건을 준수하는 어플리케이션 프로그래밍 인터페이스를 뜻하며 (REST + API) 

일반적으로 REST 아키텍처를 구현하는 웹 서비스를 RESTful 하다고 표현한다.

REST를 기반으로 시스템을 분산하여 확장성과 재사용성을 높이고, HTTP 프로토콜의 표준을 따르고 있어

특정 프로그래밍 언어에 종속되지 않고 다양한 환경에서 구현할 수 있음

 

설계 규칙

  • 웹 기반의 REST API를 설계할 경우에는 URI를 통해 자원을 표현해야 함
    • https://goodthinking.tistory.com/member/22 ( Resource : member, Resource id : 22)
  • 자원에 대한 조작은 HTTP Method(CRUD)를 통해 표현해야 함
    • URI에 행위가 들어가면 안되며, Header 를 통해 CRUD를 표현하여 동작을 요청
  • 메세지를 통한 리소스 조작
    • Header 를 통해 content-type을 지정하여 데이터를 전달, 대표적으로 HTML, XML, JSON....
  • URI에는 소문자만 사용
  • Resource의 이름이나 URI가 길어질 경우 하이픈(-)을 통해 가독성을 높임, 언더바(_)는 지양
  • 파일 확장자를 표현하지 않음