ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • REST API란?
    네트워크 2020. 10. 10. 00:13
    반응형

    프로젝트를 진행하면서 어노테이션으로 @RestController를 몇번 사용했던 적이 있다. 당시에는 비동기로 데이터를 받기 위해 사용한다 정도만 알고 있었고 이것저것 배우는거에 바빠서 더 깊게 공부할 시간이 없었다. 물론 변명이다..

    그러다 요번에 Vue.js와 SpringBoot를 이용해 간단한 게시판을 만들면서 REST API로 서버를 구현하다 보니 이번에야 말로 REST API를 공부해보자라는 결심이 들었고 마침 블로그도 하고 있으니 간단하게 포스팅도 하게 되었다.

     


     

     

    REST API란?

     

     

    REST API는 HTTP의 창시자 중 한 사람인 로이 필딩(Roy Fielding)이 웹의 장점을 최대한 활용할 수 있는 아키텍처로써 2000년도에 논문에서 발표한 것으로 여기서 REST는 Representational State Transfer의 약자입니다. 우리말로 대표적인 상태 전달이란 뜻인데 풀어서 해석하자면 자원(Resource)를 URI로 표시하고 해당 자원의 상태를 주고 받는 것을 의미합니다.

     

     

     

    REST의 구성 요소

     

     

    • Resource(자원) : URI
    • Method(행위) : GET, POST, PUT, DELETE와 같은 HTTP 메소드
    • Representaion of Resource(자원의 형태) : 클라이언트와 서버가 데이터를 주고 받는 형태 ex) json, xml 등

     

     

    REST의 특징

     

     

    1. Uniform Interface (유니폼 인터페이스)

    Uniform Interface는 URI에 대한 요청을 통일되고, 한정적으로 수행하는 아키텍처 스타일을 의미합니다. 이는 요청을 하는 클라이언트가 특정 언어나 특정 플랫폼에 종속받지 않고 HTTP를 사용하는 모든 플랫폼에 요청이 가능하다는 것을 의미합니다.

     

    2. Stateless (무상태성)

    REST는 상태 정보를 유지하지 않는 무상태적인 성격을 가집니다. 즉, 서버는 각각의 요청을 완전히 다른 것으로 인식하고 처리를 합니다.

     

    3. Cacheable (캐시 가능)

    HTTP의 기존 웹 표준을 그대로 사용하기 때문에, 웹의 기존 인프라를 그대로 활용할 수 있습니다. 그러므로 HTTP가 가진 캐싱 기능이 적용 가능합니다.

     

    4. Self-descriptiveness (자체 표현 구조)

    REST API는 요청 메세지만 보고도 의미를 쉽게 이해할 수 있는 자체 표현 구조로 되어있습니다.

     

    5. Client - Server 구조

    REST API에서 자원을 가지고 있는 쪽이 서버, 자원을 요청하는 쪽이 클라이언트에 해당합니다. 서버는 API를 제공하고 클라이언트는 사용자 인증에 관련된 일들을 직접 관리하여 역할을 확실히 구분시킴으로써 서로 간의 의존성을 줄입니다. 

     

    6. Layered System(계층형 구조)

    REST API 서버는 다중 계층으로 구성될 수 있으며 보안, 로드 밸런싱, 암호화 등을 위한 계층을 추가하여 구조상의 유연성을 둘 수 있습니다. 또한 프록시, 게이트웨이 같은 네트워크 기반의 중간매체를 사용할 수 있게 합니다.

     

     

     

    References

     

    - https://mangkyu.tistory.com/46

    - https://velog.io/@stampid/REST-API%EC%99%80-RESTful-API

    728x90

    '네트워크' 카테고리의 다른 글

    TCP Flag란?  (0) 2020.10.22
    3-Way / 4-Way Handshake  (0) 2020.10.04
    HTTP Response Status Code (응답 상태 코드)  (0) 2020.10.01
    HTTP Request / Response 메시지 구조  (0) 2020.09.28
    TCP/IP 및 TCP, UDP  (0) 2020.09.20

    댓글

Designed by Tistory.