REST, 그게 대체 뭔데?

지인호·2021년 12월 8일
1

get some "REST"

목록 보기
1/1
post-thumbnail

백엔드 개발자라면 한번쯤은 들어봤을 단어 REST
하지만 정작, REST 가 뭐야? 라는 질문에 명확히 대답할 수 있는 개발자는 많지 않습니다.
흔한 백엔드 개발자에서 흔치 않은 고급 개발자가 되기 위한 필수지식!
REST, RESTful, REST API 에 대해 알아봅시다!

해당 포스트는 분량 조절을 위해 시리즈 형식으로 게시됩니다. 해당 포스트에서는 REST 에 대한 기초 개념만을 다룹니다

REST란?

Representational State Transfer

한문장으로 해석하자면?

자원의 이름(표현)으로 자원을 구분하여, 해당 자원의 정보주고받는 방식입니다

💡 잠깐, 자원이 뭔가요?
자원이란, 해당 소프트웨어가 관리하는 모든 것들을 의미합니다!
좀더 쉽게 설명하자면, 여러분의 서비스에 저장되는 문서, 그림, DB 테이블 등이 여기에 해당됩니다.
velog 로 따진다면 velog 에 가입한 회원 정보, 게시글 정보, 시리즈 정보, 태그 정보 등이 여기에 해당하죠.

자원의 표현이란 무엇일까요?

자원의 표현 (Resource Representational) 이란?
'표현' 하면 무엇이 떠오르시나요?
우리는 무언가를 나타낼 때 '표현' 이라는 단어를 씁니다.
그렇다면 자원의 표현이란 자원을 나타내는 것 이지 않을까요??

맞습니다.
자원의 표현 이란 전술한 자원 을 표현하기위한 이름을 뜻합니다.
예를들어서, DB 내에 회원의 정보가 존재하고 이를 자원으로 규정할 경우 자원의 표현은 account 같은 이름이 되는 것 이죠.

그렇다면 State Transfer, 상태 전달은 뭐죠?

State Transfer 를 그대로 번역하면 상태 전달 이 되는데요.
자원의 상태 즉, 자원의 정보를 데이터가 요청되는 시점에서 전달하는것을 말합니다.
보통은 JSON 이나 XML 같은 서식있는 텍스트 로 전달하죠.

🤔 데이터가 요청되는 시점? 그게 언젠가요?
말 그대로 데이터가 요청될 때 입니다.
브라우저, FE Application 같은 Client 에서 Server 에게 정보를 요청하는 그 순간을 뜻합니다.
그렇다는건, REST 라는 개념이 Server 를 위한 개념 이란 것도 자연스럽게 알 수 있겠네요
여기서 말하는 Server 란, 단순히 Backend 를 말하는것이 아닌, 자원을 가지고있고 이를 전달하는 모든 어플리케이션을 뜻합니다)

너무 추상적이에요! 좀 더 알고싶어요

REST 에서 자원을 명시하는 방법
REST에서는 HTTP URI를 통해 자원을 표현 하고, HTTP Method(POST, GET, PUT, DELETE) 를 통해 해당 자원에 대한 CRUD Operation 을 적용하는 것 입니다

🤔 CRUD Operation 이 뭔가요?
말그대로 CRUD 작업을 말합니다
CRUD 란 Create, Read, Update, Delete 의 약자입니다.
여기서는 자원의 생성/조회/수정/삭제 명령으로 이해하시면 됩니다!

즉, REST 는 Resource 를 중심으로, HTTPMethod 를 통해 Resource 를 처리하도록 설계된 아키텍처 입니다.
따라서 웹 사이트에 존재하는 모든 자원(이미지, 텍스트, DB데이터)에 고유한 식별자인 HTTP URI 를 부여합니다

💡 HTTP Method 별 CRUD Operation

OperationHttpMethodDescription
CreatePOST생성
ReadGET조회
UpdatePUT&PATCH수정
DeleteDELETE삭제

Today We Learned

오늘 우리는

  • REST 의 정의
  • REpresentational 과 State Transfer 의 의미
  • REST 에서 정의하는 "자원"
  • REST 에서 자원을 명시하는 방법
  • REST 아키텍처에서의 HTTPMethod 별 CRUD Operation

에 대해서 배웠습니다 😁
다음 포스트에서는 "REST 아키텍처를 써야하는 이유와 장단점" 에 대해서 소개해드리려고 하니 많은 기대 부탁드립니다!

profile
테오의 스프린트 17기 퍼실리테이터

0개의 댓글