상세 컨텐츠

본문 제목

REST API 개념

Spring/개념

by Chan.94 2022. 7. 13. 10:32

본문

반응형

REST

HTTP의 주요 저자 중 한 명인 로이 필딩(Roy Fielding)이 2000년도에 박사학위 논문에서 최초로 소개되었으며 당시 그는 웹(HTTP) 설계의 우수성에 비해 제대로 제대로 사용되지 되지 못하고 있다고 생각하였고, 웹의 장점을 최대한 활용하는 아키텍처로서 REST를 발표하였다.

 

Representational State Transfer”의 약자로, 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다.

 

자원(resource)의 표현(representation)

  • 자원 - 해당 소프트웨어가 관리하는 모든 것
    ex) 문서, 그림, 데이터, 해당 소프트웨어 자체 등
  • 자원의 표현 - 그 자원을 표현하기 위한 이름
    ex) DB의 학생 정보가 자원일 때, ‘students’를 자원의 표현으로 정한다.

 

상태(정보) 전달
데이터가 요청되는 시점에서 자원의 상태(정보)를 전달한다.
JSON 혹은 XML를 통해 데이터를 주고받는 것이 일반적이다.


REST API

REST API는 REST라는 설계도를 구현한 API를 말한다. 웹 애플리케이션이 제공하는 각각의 데이터를 리소스(자원)로 간주하고 각각의 자원에 고유한 URI(통합 자원 식별자)를 할당함으로써 이를 표현한 API이다.

 

REST API 구성

자원(Resource): URI

  • 모든 자원에 고유한 ID가 존재하고, 이 자원은 Server에 존재한다.
  • 자원을 구별하는 ID는 ‘/groups/:group_id’와 같은 HTTP URI 다.
  • Client는 URI를 이용해서 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 Server에 요청한다.


행위(Verb): HTTP Method

  • HTTP 프로토콜의 Method를 사용한다.
  • HTTP 프로토콜은 GET, POST, PUT, DELETE와 같은 메서드를 제공한다.


표현(Representation of Resource)

  • Client가 자원의 상태(정보)에 대한 조작을 요청하면 Server는 이에 적절한 응답(Representation)을 보낸다.
  • REST에서 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태의 Representation으로 나타내어질 수 있다.
  • JSON 혹은 XML를 통해 데이터를 주고받는 것이 일반적이다.

 

REST API 특징

1) Uniform Interface (유니폼 인터페이스)
REST는 HTTP 표준만 따른다면 모든 플랫폼, 언어에서 사용이 가능하다.

2) Stateless (무상태성)
작업을 위한 상태 정보를 따로 저장하고 관리하지 않는다.
세션 정보나 쿠키 정보를 별도로 저장하고 관리하지 않기 때문에 API 서버는 들어오는 요청만을 단순히 처리하면 된다.

그렇기에 서비스의 자유도가 높아지고 서버에서 불필요한 정보를 관리하지 않음으로써 구현이 단순해진다.

3) Cacheable (캐시 가능)
HTTP라는 기존 웹 표준을 그대로 사용하기 때문에, 웹에서 사용하는 기존 인프라를 그대로 활용이 가능하다.

따라서 HTTP가 가진 캐싱 기능이 사용할 수 있으며 HTTP 프로토콜 표준에서 사용하는 Last-Modified태그나 E-Tag를 이용하면 캐싱 구현이 가능하다.

4) Self-descriptiveness (자체 표현 구조)
주석과 같은 다른 부연 설명 없이 REST API 메시지만 보고도 이해가 가능하다.


5) Client - Server 구조

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

역할이 확실히 구분되기 때문에 Client와 Server에서 개발해야 할 내용이 명확해지고 서로 간 의존성이 줄어들게 된다.

6) 계층형 구조

  • Client는 REST API Server만 호출한다.
  • Server는 다중 계층으로 구성될 수 있다.
    순수 비즈니스 로직을 수행하고 그 앞단에 보안, 암호화, 사용자 인증 등을 추가하여 구조상의 유연성을 줄 수 있다.
    PROXY, 게이트웨어 같은 네트워크 기반의 중간 매체를 사용할 수 있다.

 

RESTful

  • RESTful은 REST를 REST 답게 쓰기 위한 방법으로, 누군가가 공식적으로 발표한 것이 아니다.
    즉, REST 원리를 따르는 시스템은 RESTful이란 용어로 지칭된다.
  • RESTful은 일반적으로 REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어이다.
    ‘REST API’를 제공하는 웹 서비스를 ‘RESTful’하다고 할 수 있다.

기계 독해API 사용

공공데이터 포털 REST API - 결과값 JSON to Array

반응형

관련글 더보기

댓글 영역

>