백엔드 개발자라면 한번쯤은 들어봤을 단어
REST
하지만 정작, REST 가 뭐야? 라는 질문에 명확히 대답할 수 있는 개발자는 많지 않습니다.
흔한 백엔드 개발자에서 흔치 않은 고급 개발자가 되기 위한 필수지식!
REST
,RESTful
,REST API
에 대해 알아봅시다!
해당 포스트는 분량 조절을 위해 시리즈 형식으로 게시됩니다. 해당 포스트에서는 REST 에 대한 기초 개념만을 다룹니다
Representational State Transfer
자원의 이름(표현)으로 자원을 구분하여, 해당 자원의 정보를 주고받는 방식입니다
💡 잠깐, 자원이 뭔가요?
자원이란, 해당 소프트웨어가 관리하는 모든 것들을 의미합니다!
좀더 쉽게 설명하자면, 여러분의 서비스에 저장되는 문서, 그림, DB 테이블 등이 여기에 해당됩니다.
velog 로 따진다면 velog 에 가입한 회원 정보, 게시글 정보, 시리즈 정보, 태그 정보 등이 여기에 해당하죠.
자원의 표현 (Resource Representational) 이란?
'표현' 하면 무엇이 떠오르시나요?
우리는 무언가를 나타낼 때 '표현' 이라는 단어를 씁니다.
그렇다면 자원의 표현이란 자원을 나타내는 것 이지 않을까요??
맞습니다.
자원의 표현
이란 전술한 자원
을 표현하기위한 이름을 뜻합니다.
예를들어서, DB 내에 회원의 정보가 존재하고 이를 자원으로 규정할 경우 자원의 표현은 account 같은 이름이 되는 것 이죠.
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
Operation HttpMethod Description Create POST 생성 Read GET 조회 Update PUT&PATCH 수정 Delete DELETE 삭제
오늘 우리는
에 대해서 배웠습니다 😁
다음 포스트에서는 "REST 아키텍처를 써야하는 이유와 장단점" 에 대해서 소개해드리려고 하니 많은 기대 부탁드립니다!