본문 바로가기

others

TIL no.42 - REST API

 

회사에서 요구하는 우대사항을 보더라도 REST API를 이해하고 있다는 문장이 들어가 있는 것을 쉽게 볼 수 있듯이

REST API 는 중요한 개념을 차지합니다.

프로젝트나 인턴십을 진행할 때도 내가 REST API를 사용하고 있는지 아닌지 알지 못했고

이 개념에 대해 따로 이해하고 정리하고 싶다는 생각을 하다가

이제야 정리하게 되었습니다 !

 

REST API란,

REST 는 Representational State Teansfer 의 약자입니다.

데이터 자원을 명시적인 URL 소스로 구분하여 자원의 상태와 정보를 주고 싶는 것이라고 할 수 있습니다.

 

URI을 통해 자원(Resource)를 명시하고 HTTP Method를 통해 해당 자원에 대한 CRUD를 적용하는 것을 말합니다.

*CRUD는 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 가리키는 용어입니다.

 

API는 정보들을 요청하는 지정된 형식으로 보내면 이렇게 답이 올 것이라는 공개된 형식.

소프트웨어가 다른 소프트웨어로부터 지정된 형식으로 요청, 명령을 받을 수 있는 수단을 말합니다.

 

한마디로 REST API는 별도의 설명없이 명시적으로 구분 가능한 API를 말합니다.

 

 

 

 

 

REST API에서 REST의 의미가 출현하게 된 계기를 알고싶다면

더보기

REST API 에서의 REST의 의미부터 알아보자면

REST는 서버와 클라이언트가 각각 독립적으로 진화하기 위해서 만들어졌습니다.

서버의 기능이 변경되어도 클라이언트를 업데이트할 필요가 없습니다.

또한 웹 브라우저를 업데이트 했다고 웹 페이지를 변경할 필요도 없습니다.

이에 따라 웹에서는 이 부분이 잘 지켜지고 있는 편입니다.

웹은 현재 독립적으로 잘 진화하고 있기 때문에 REST는 성공적이라고 볼 수 있습니다.

 

REST 에 비해 REST API는 이 저자가 의미한 의미대로 잘지켜지지 않고 있으나 

그냥 REST API 라고 불리며 사용되고 있는 경우가 대부분이라고 합니다.

사실 REST API의 정의에 대해 간단히 서칭하고 이해하고 싶었으나 너무 깊이들어가 더 이해하기 어려워짐.

 

 

 REST API, RESTful API를 들었을 때 설명을 잘 못하겠지만 아마 사용하고 계실 수도 있습니다.

메세지안에 스스로가 무엇인지에 대한 의미를 담고 있는 URI를 가지면 됩니다.

REST API란 HTTP요청을 보낼 때 어떤 URI에 어떤 메소드를 사용할 지 개발자들 사이에 널리 지켜지는 약속입니다.

형식이기 때문에 기술에 구애받지 않습니다.

소프트웨어 간 HTTP를 주고받는 형식이 있다면 이 규칙들을 준수하여 RESTful한 서비스를 만들 수 있습니다.

URI 를 통해 식별하며 어떠한 행위를 할 때는 Method의 이름을 HTTP의 규정대로 사용합니다.

 

 

웹의 통신 규약인 HTTP를 이용한 REST API는 Create, Read, Update, Delete  를 할 수 있습니다.

 

이를 표현하는 HTTP Method  POST,  GET,  PATCH,  PUT,  DELETE  가 있습니다.

 

 

 

REST의 특징

 

- 클라이언트 서버

REST 서버는 API를 제공하고 Clinet는 사용자 인증이나 컨텍스트를 관리하는 구조로 되어있어서 서버와 클라이언트의 역할이 명확하게 나뉘기 때문에 서로 간의 의존성이 줄어 독립적으로 관리하기 편리합니다.

- stateless (무상태성)

REST의 무상태성은 데이터 자원의 상태나 그 정보들을 별도로 저장하고 관리하고 있지 않다는 것을 의미합니다.

이러한 특징 때문에 데이터의 상태를 유지하고 있는 경우에 비해 데이터의 낭비를 줄일 수 있고 별도로 저장하고 있지 않기 때문에 서버는 들어오는 요청에 맞는 응답만 처리하면 됩니다. 따라서 서버가 불필요한 정보를 관리하지 않아도 되기 때문에 구현이 단순해집니다.

- Self-descriptiveness

REST API의 의미에 알맞게 API 자체만 보고도 데이터의 상태와 정보를 쉽게 이해할 수 있다는 것입니다.

marketkerly/product_list/food/sales 이 uri만 보고도 product list의 food에서 세일 상품들을 나타내고 있는 것을 알 수 있듯이 말입니다!

- cacheable 

 

- uniform interface

Unifrom Interface Client 가 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일을 말합니다.

리소스를 만들거나 업데이트하거나 삭제할 때 표현을 담아 전송해야한다. 메세지가 스스로를 설명해야 한다.

 

 

 

 

 

이 외에 다른 특징도 있습니다.

하지만 대부분의 특징이 가리키는 것은 정확하게 명시하여 URI 에 표현하고 

서버와 클라이언트 간의 역할을 명확하게 할 수 있다는 점을 가리킵니다.

 

 

이제 REST API에 대한 이해가 되셨겠죠 ?

 

 


 

 

*프로토콜 : 공통의 테이터 교환 방법 및 순서에 대해 정의한 의사소통 약속, 규약 혹은 규칙 체계를 말합니다.

 

*

WEB 

표현방식 : HTML

식별자 : URI

전송방법 : HTTP

 

 

*HTTP(HyperText Transfer Protocol) : 컴퓨터들끼리 HTML파일을 주고받을 수 있도록 하는 소통방식 또는 약속.

 HTTP 통신은 Request(요청)과 Response(응답)으로 이루어 진다.

 HTTP 통신의 매 요청과 응답은 이전 상태를 알지 못 한다. (Stateless)