티스토리 뷰

 

 

REST.... REST API .... RESTful ......

공통적으로 모두 사용되는 REST 라는 단어‼ 대체 무슨뜻인가요?

 

 

 

 

📢 REST


“Representational State Transfer”의 약자로 소프트웨어 프로그램 아키텍처의 한 형식이다.

장비간 통신을 위해 복잡한 방법을 사용하는 대신 간단하게 HTTP를 이용하는 것이 목적이다.

 

⇒ 쉽게 생각해서 최근의 서버 프로그램은 다양한 브라우저, 안드로이폰, 아이폰 등 모바일 디바이스에서도 통신을 할 수 있어야 하기 때문에 사용함!

 

 

 

🙄소프트웨어 프로그램 아키텍처..? 참 어려운 말이다 ㅎㅎ

애초에 이게 광범위하고 정확하게 딱 떨어져서 어떤 단어다 라고 정의할 수 없는 단어라 그렇다.

쉽게 설명하자면..

소프트웨어 시스템을 만드는데 시스템의 목적을 달성하기 위해 시스템 디자인에 대한 제약 및 설계하는 것이다.

소프트웨어 시스템을 개발하는데 주변환경들을 먼저 고려해서 최상의 소프트웨어를 구성하고자 하는 역할을 한다. 

 

 

REST는 OO 이다. 바로 이것. 

자원 지향 구조(Resource Oriented Architecture)

➡ 웹 사이트의 이미지, 텍스트, DB 내용 등의 모든 자원에 고유한 URI를 부여한다.

 

 

 

 

엄격한 의미로 REST는 네트워크 아키텍쳐 원리모음이다.

 

💡네트워크 아키텍처 원리란?

자원을 정의하고 자원에 대한 주소를 지정하는 방법 전반을 말한다.

 

웹 상의 자료

HTTP위에서

SOAP이나 쿠키를 통한 세션 트랙킹(Session Tracking, 요청된 세션을 찾아 주는 동작) 같은 별도의 전송 계층 없이 전송하기 위한 아주 간단한 인터페이스를 말한다.

 

 


그래서 REST ! 한마디로 설명하자면?

HTTP URI ( Uniform Resource Identifier ) 를 통해 자원( Resource )을 명시하고,

 

💡 URI ( Uniform Resource Identifier )

웹 서버가 리소스를 고유하게 식별할 수 있도록 하는 것

  • URL : 특정 서버의 한 리소스에 대해 구체적인 위치를 서술합니다.
  • URN : 리소스가 어디에 위치해 있든 찾을 수 있는 방식을 말합니다.

HTTP Method ( POST, GET, PUT, DELETE )를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것!

 

💡 CRUD Operation

  • Create : 생성(POST)
  • Read : 조회(GET)
  • Update : 수정(PUT)
  • Delete : 삭제(DELETE)
  • HEAD: header 정보 조회(HEAD)

 

 

 

REST 구성

 

1. 자원 ( Resource ) HTTP URI

모든 자원은 고유한 ID를 가진다. ID는 서버에 존재하고 클라이언트는 각 자원의 상태를 조작하기 위해 요청을 보낸다.

HTTP에서 자원을 구별하는 ID는 ‘Students/1’ 같은 HTTP URI 이다.

 

2. 행위(Verb) HTTP Method

HTTP 프로토콜에서는 GET , POST , PUT , DELETE 같은 Method를 제공한다.

클라이언트는 URI를 이용해 자원을 지정하고 자원을 조작하기 위해 Method를 사용한다.

 

3. 표현(Representation)

클라이언트가 서버로 요청을 보냈을 때 서버가 응답으로 보내주는 자원의 상태를 표현이라고 한다.

REST에서 하나의 자원은 JSON , XML , TEXT , RSS 등 여러형태의 Representation으로 나타낼수 있다.

 

 

 

 

 

 

 

📢 REST API


REST API 탄생 배경

2000년도에 HTTP의 주요 저자 중 한 사람인 로이 필딩이 그 당시 웹 설계의 우수성에 비해 제대로 사용되어지지 못하는 모습에 안타까워하며

웹의 장점을 최대한 활용할 수 있는 Architecture로써 REST를 발표한다.

 

따라서 REST API는 💡 REST기반으로 서비스 API를 구현한 것

이라고 할 수 있다.

 

💡 API ( Application Programming Interface )

애플리케이션 프로그래밍 인터페이스 ( Application Programming Interface )

애플리케이션 소프트웨어를 구축하고 통합하기 위한 정의 및 프로토콜 세트

  • API를 사용하면 구현 방식을 알지 못해도 제품 또는 서비스가 서로 커뮤니케이션할 수 있고
  • 애플리케이션 개발을 간소화하여 시간과 비용을 절약할 수 있다!

 

 

REST API 특징

  1. REST 기반으로 시스템을 분산해 확장성과 재사용성을 높여 유지보수 및 운용이 편리하다.
  2. REST는 HTTP 표준을 기반으로 구현하므로, HTTP를 지원하는 프로그램 언어로 클라이언트, 서버를 구현할 수 있다.
  3. ➡ 즉, REST API를 제작하면 델파이 클라이언트 뿐 아니라, 자바, C#, 웹 등을 이용해 클라이언트를 제작할 수 있다.

 

 

REST API 디자인 가이드

  • URI는 Resource를 표현해야 한다.
  • Resource에 대한 행위는 HTTP Method (GET, PUT, POST, DELETE등등)로 표현한다.

 

 

 

 

 

📢 RESTful


제약 조건의 집합(아키텍처 스타일, 아키텍처 원칙)을 모두 만족하는 것을 의미한다.

 

따라서

RESTful은 💡REST API의 설계 의도를 명확하게 지켜주는 것 이라는 뜻이다!

 

 

 

REST 라는 아키텍처 스타일이 있는거고,

RESTful API는 REST 아키텍처 원칙을 모두 만족하는 API라는 뜻이다.

REST API를 제공하는 웹 서비스를 RESTful 하다고 할 수 있다.

 

 

👍🏻 RESTful한 API란, " 각 구성요소들의 역할이 완벽하게 분리되어 있는 것 " 이라고 말합니다.

➕ RESTful은 REST를 REST답게 쓰기 위한 방법으로, 누군가가 공식적으로 발표한 것이 아니다.

 

 

 

 

 

 

 

📢 REST의 특징


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

  • Uniform Interface는 URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일

2. Stateless (무상태성)

  • 상태가 있다 없다는 의미는 사용자나 클라이언트의 컨택스트를 서버쪽에 유지 하지 않는다는 의미한다.
  • 세션이나 쿠키등을 별도로 관리하지 않기 때문에 API서버는 요청만을 들어오는 메시지로만 처리하기 때문에 구현이 단순하다.

3. Cacheable (캐시 처리 가능)

  • REST의 가장 큰 특징 중 하나는 HTTP라는 기존 웹표준을 그대로 사용한다.
  • HTTP가 가진 캐싱 기능이 적용 가능하다. HTTP 프로토콜 표준에서 사용하는 Last-Modified태그나 E-Tag를 이용하면 캐싱 구현이 가능하다.

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

  • REST의 또 다른 큰 특징 중 하나는 REST API 메시지만 보고도 이를 쉽게 이해 할 수 있는 자체 표현 구조로 되어 있다는 것

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

  • REST 서버는 API를 제공하고, 제공된 API를 이용해서 비즈니스 로직 처리 및 저장을 책임진다.
  • 클라이언트의 경우 사용자 인증이나 컨택스트(세션,로그인 정보)등을 직접 관리하고 책임진다.
  • 서로간의 의존성이 줄어들게 된다.

6. 계층형 구조

  • 클라이언트 입장에서는 REST ApI 서버만 호출한다.
  • REST 서버는 다중 계층으로 구성될 수 있다. 예를 들어 보안, 로드 밸런싱, 암호화, 사용자 인증등등 추가하여 구조상의 유연성을 줄 수 있다.

 

 

 

 

 

 

 

 

반응형

'computer science > network' 카테고리의 다른 글

쿠키와 세션의 차이점  (0) 2021.07.16
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함