Backend 취업을 준비하며 수 많은 공고에서 항상 보이는 말 REST API... 널리 알려진 뜻은 다음과 같습니다.
- 네트워크에서 통신을 구성할 때 이런 구조로 설계하라는 지침을 지키는 API
- URI를 통해 자원(Resource)을 명시하고, Method(POST, GET.. 등등)를 통해 해당 자원에 대한 CRUD를 적용하는 API
대부분의 자료에서 REST의 뜻에 대한 설명보다는 REST라는 지침을 어떻게 지키는지에 대해서만 중점적으로 다루고 있었습니다. 이런 자료를 볼 때마다 저는 "왜 이렇게 이름을 붙였지?" 라는 의문이 있었습니다. 그래서 이번 기회에 REST란 이름의 의미를 제대로 공부해보고자 합니다.
REST의 탄생 배경
먼저 REST의 탄생 배경부터 알아보겠습니다.
때는 2000년, HTTP가 탄생하고 사용되고 있었지만 사람들은 HTTP의 목적과 양식 따윈 개나 줘버리고 모든 데이터(화면, 이미지 ..등등)를 HTTP에 우겨넣어서 사용했습니다. ( 고민을 안해도 되니까 + 편하니까 )
보다 못한 HTTP 창시자중 한명인 로이 필딩(Roy Fielding)이 세미나에서 REST API를 발표합니다 : "니들 그렇게 쓰면 성능이고 뭐고, HTTP가 제기능을 못한다. 집에 가서 이렇게 한번 해봐라. 성능도 좋고 깔끔하다."
REST의 뜻
Representational : "대표하는 것을 중점으로 하는, 대표하는 것과 연관된"
대체 무엇을 대표하는 것에 중점을 두는 걸까요?
바로 자원( Resource )입니다.
API는 프로그램 외부에서 프로그램에게 기능/서비스를 요청하는 방법입니다. 프로그램의 내부에는 관심이 없습니다. 즉 서버의 자원이 구체적으로 어떻게 구현되어 있는지는 신경을 쓰지도 않고, 알아낼 방법도 없습니다.
그렇기 때문에 API가 필요한 건 서버의 자원의 구조를 효과적으로 표현/대표할 수 있으면서 + 외부의 모두가 사용하기 편한 형식입니다.
이 형식의 목적은 서버가 요청에 사용된 형식을 보고 "구현된 자원의 구조와는 다르지만, 자원을 이렇게 해줬으면 좋겠다는 요청이군"과 같은 생각을 하게 하는 것입니다.
State : "상태"
API 수행으로 인해 발생하는 서버 자원의 상태를 의미합니다.
예시 : 자원이 생성될 수도, 읽혀질 수도, 수정될 수도, 삭제될 수도 있습니다.
Transfer : "전달"
이건 그냥 전달한다는 뜻입니다.
개인적인 해석
위 내용을 직역하면 이렇습니다.
REST : 대표하는 것을 중점으로 하는 상태를 전달하는
마는.. 개인적으로는 이렇게 표현하고 싶습니다.
어떻게 생겨먹었는지 모를 서버 자원을
최대한 잘 표현할 수 있는 형식을 사용해서( Representational )
이번 요청으로 인해 발생하는
서버 자원의 상태를 ( State )
전달하는 ( Transfer )
End.
참고자료
'CS' 카테고리의 다른 글
실수계산 오차와 부동소수점 ( feat. IEEE 754 표준 ) 2부 (0) | 2025.05.16 |
---|---|
URI vs URL vs URN (0) | 2025.04.14 |
실수계산 오차와 부동소수점 ( feat. IEEE 754 표준 ) 1부 (1) | 2024.11.25 |
SOLID원칙의 간단한 정리 (0) | 2024.06.23 |
C언어의 컴파일 과정 (1) | 2023.12.22 |