REST API가 뭐야?

2020. 8. 15. 01:00✅ STUDY/node.js

Node.js 개념 정리

REST API


서버를 본격적으로 개발하기 전에, RESTful하다 라는 표현 들어보셨나요?! 
이게 무엇인지 저도 정확히 몰라 헷갈렸습니다ㅜ.ㅜ

지금부터 함께 알아봐요!

서버에 요청을 보낼 때는 주소를 통해 요청의 내용을 표현해요.
주소가 /index.html이면 서버에게 index.html을 보내줘~ 라는 뜻이고,
/login 이라는 주소라면 html을 요청하는 대신 세션 저장이라는 '동작'을 취하길 요청해요.

이렇듯 요청이 주소를 통해 들어오므로 서버가 이해하기 쉬운 주소를 사용하는 것이 좋겠죠?!

여기서 REST API가 등장합니다!


API

어떤 서버에 특정한 부분에 접속해 그 안의 데이터와 서비스를 이용할 수 있게 해주는 소프트웨어 도구입니다.
그래서 2개의 SW가 통신을 할 수 있게 해주죠!

 


REST

네트워크를 통해 컴퓨터들끼리 통신할 수 있게 해주는 아키텍쳐 스타일입니다.  URI와 HTTP를 기반으로 합니다.

*아키텍처 란? 최적화를 목표로 두고 시스템 구성과 동작원리 그리고 시스템의 구성환경등을 설명 및 설계하는 청사진 또는 설계도

 

위 두 단어를 합친 REST API에 대해 자세히 알아볼까요?!


REST API

REST API는 REpresentational State Transfer의 약어에요. 
소프트웨어 프로그램 아키텍처의 한 형식인데요. 
서버의 자원을 정의하고, 자원에 대한 주소를 지정하는 방법을 가리킵니다.

REST API는 다음의 구성으로 이루어져있습니다.

자원 (Resource) - URL
행위 (Verb) - Http method
표현 (Representations)

자원에 대한 행위는 HTTP Method로 표현합니다.
아래가 대표적으로 사용하는 4가지 Mehtod입니다.

HTTP Method 역할
GET GET을 동해 해당 리소스를 조회합니다.
POST POST를 통해 해당 URL를 요청하면 리소스를 생성합니다.
PUT PUT을 통해 해당 리소스를 수정합니다.
DELETE DELETE를 통해 해당 리소스를 삭제합니다.

 

REST 아키택처를 이용하여 API를 설계하였을 때 아래와 같은 이점을 가집니다.

 

1) 클라이언트/서버 구조

클라이언트는 유저와 관련된 처리를, 서버는 REST api를 제공함으로써 각각의 역활이 확실하게 구분되고 일관적인 인터페이스로 분리되어 작동할 수 있게 한다.

2) 무상태성 (Stateless)

REST는 HTTP의 특성을 이용하기 때문에 무상태성을 갖는다. 즉 서버에서 어떤 작업을 하기 위해 상태정보를 기억할 필요가 없고 들어온 요청에 대해 처리만 해주면 되기 때문에 구현이 쉽고 단순해진다.

3) 캐시 처리 가능(Cacheable)

HTTP라는 기존 웹표준을 사용하는 REST의 특징 덕분에 기본 웹에서 사용하는 인프라를 그대로 사용 가능하다.

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

Json을 이용한 메세지 포멧을 이용하여 직관적으로 이해할 수 있고 REST api 메세지만으로 그 요청이 어떤 행위를 하는지 알 수 있다.

5) 계층화(Layered System)

클라이언트와 서버가 분리되어 있기 때문에 중간에 프록시 서버, 암호화 계층등 중간매체를 사용할 수 있어 자유도가 높다.

6) 유니폼 인터페이스(Uniform)

Uniform Interface는 Http 표준에만 따른다면 모든 플랫폼에서 사용이 가능하며, URI로 지정한 리소스에 대한 조작을 가능하게 하는 아키텍처 스타일을 말한다.


RESTful

REST API를 사용한 주소 체계를 가지고 있는 서버를 RESTful한 웹 서버이다! 라고 합니다.


참고) 길벗출판사 Node.js 교과서,

https://velog.io/@wlsdud2194/HTTP-REST-API-%EB%9E%80

'✅ STUDY > node.js' 카테고리의 다른 글

http 모듈을 이용한 server 구현  (0) 2020.08.15
Node.js 개념과 특징  (0) 2020.08.15