본문 바로가기

IT용어

REST API란 ?

일단 어떻게 이 글을 쓰게 되었는지 간략하게 설명하자면..

REST API의 뜻을 정확하게는 아니여도 알고 있는 줄 알았는데 학교 선배가 면접 질문에 나온다면서

나한테 REST API 뜻을 물었을 때 "에이 당연히 알죠" 이렇게 해놓고 설명 해보라고 했을 때 갑자기 뭐라고 해야할지

모르겠어서 당황스러웠고 부끄러웠던 적이 있습니다. 백엔드 개발자가 REST API 뜻도 제대로 모르고 개발하고 있었다는게

창피할 따름입니다... 그래서 이 글을 쓰면서 다시 정리해보려고 합니다.

 

이미지 출처 : https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html

REST란 ?

'Representational State Transfer'의 약자로, 분산 하이퍼미디어 시스템 아키텍처의 형식입니다. 간단히 말해 HTTP 메서드(GET, POST, PUT DELETE)를 통해 클라이언트와 자원을 주고 받는 것을 의미합니다.

 

API란 ?

'Application Programming Interface'의 약자로, 애플리케이션에 제공하는 인터페이스를 의미합니다. API를 통해서 서버나 프로그램 사이를 연결할 수 있습니다.

 

REST API(REST + API)란 ?

REST 아키텍처를 따르는 시스템 인터페이스.

 

RESTful하다?

REST아키텍처를 구현하는 웹 서비스를 통틀어서 'RESTful하다' 라고 표현합니다.

REST 특

유니폼 인터페이스

쉽게 말해서 일관된 인터페이스를 의미합니다. REST는 HTTP 전송 규약을 따르기 때문에 어떤 프로그래밍 언어로 만들어졌는지 상관없이 플랫폼이나 기술에 종속되지 않고 다른 기술이나 타언어 등과 호환해 사용할 수 있다는 것을 의미합니다.

 

무상태성(stateless)

무상태성이란 서버에 상태 정보를 따로 보관하거나 관리하지 않는다는 의미 입니다. 서버는 클라이언트가 보낸 쿠키나 세션 정보를 별도로 보관하지 않습니다. 그렇기에 얼마나 많은 요청을 보내는지 관계 없이 개별적으로 처리합니다. 

이런 서비스는 서버가 불필요한 정보를 관리하지 않으므로 비지니스 로직의 자유도가 높고 설계가 단순합니다.

 

캐시 가능성

REST는 HTTP를 그대로 사용하므로 HTTP의 캐싱 기능을 가지고 있습니다. 캐싱이 가능한 경우 클라이언트에서 캐시에 저장하고 같은 요청에 대해서는 해당 데이터를 사용합니다. 이 기능을 사용하면 서버의 트랜잭션 부하가 줄어 효율적이며 사용자 입장에서 성능이 개선됩니다.

레이어 시스템(Layered System)

REST 서버는 네트워크 상 여러 계층으로 구성될 수 있습니다. 

클라이언트-서버 아키텍처

REST서버는 API를 제공하고 클라이언트는 사용자 정보를 관리하는 구조로 분리해서 설계합니다. 이 구성은 서로에 대해 의존성을 낮춥니다.

 

 

 

REST API의 URL을 설계할 때 규칙이 있습니다

URI마지막에는 '/'를 붙이지 않는다거나 언더바를 사용하지 않는다던가... 글이 길어졌기 때문에 이 규칙 내용은 따로 글을 쓰도록 하겠습니다. REST API에 대한 글을 다시 한번 쓰면서 정의하니깐 머리 속에 완전 잘 박히는 기분이네요 ㅎ 도움이 됐다면 좋아요 부탁드립니다!