카테고리 없음

Rest의 약자는 Representational State Transfer

윤-찬미 2022. 2. 7. 23:33

Restful 하네

restful 함은 rest를 rest답게 쓴것이다.

여기서 rest 란 무엇을 의미할까?

HTTP URI를 통해 자원을 명시하고, HTTP Method(POST, GET, PUT, DELETE 등등)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.

즉 아키텍쳐이다.

Restful 하다는 것은 이 아키텍쳐를 잘 지켰네~ 하는 것이다.

모두가 알다 싶이 우리에겐 만능 post 가 있다 post method 하나로만 crud를 구축할 수 있다는 말이다.

하지만 ‘명시' 하자는 것이다. 내가 지금 삭제하려고 했음을, 수정하려고 했음을, 등록하려고 했음을..

간단하게 생각하면, 물은 컵으로도 마실 수 있고, 그릇으로도, 숟가락으로도 마실 수 있지만..

누가 물마시는거에 가장 바람직한 도구를 고르라하면 단연 컵이 아니겠는가.. 내가 말했지만 그리 적절치 못한 예시같다...ㅎ

 

Rest의 약자는 Representational State Transfer

representation이란 무엇인가?

어떤 리소스의 특정 시점의 상태를 반영하고 있는 정보이다.

representation 의 구성은 다음과 같다.

  • representation data
  • representation metadata

예를 들어 나의 이름 받아오기 위해 아래와 같은 api call을 날렸다고 해보자.

요청

GET https://example.org/valley
Host: example.org
Accept: text/plain, text/html; q=0.9 *; q=0.1
Accept-Language: ko, en; q=0.9, *; q=0.1

응답

HTTP/2.0 200 OK
Content-Length: 6
Date: Sun, 19 Mar 2021 10:00:00 GMT
Last-Modified: Sun, 15 May 2021 08:00:00 GMT
Content-Type: text/plain
Content-Language: ko

valley

 

이때 받은 valley는 representation data 라고 부른다.

우리가 그 흔하게 부르는 “리소스” 라는 것인데, 정확하게 말하면 representation data 이 맞다.

그리고 Content-Type: text/plain, Content-Language: ko ... 등등 이건 representation metadata 이다.

state란 웹에플리케이션의 상태이다.

Transfer 는 이 상태의 전송을 의미한다.

 

즉 우리는 서버와 api call을 날리고 받는 과정이

“representation 의 전송(Transfer) 를 통해 우리가 보고 있는 웹에플리케이션의 상태(state) 가 달라진다.”

라고 할 수 있는 것이다.

그래서 Representational State Transfer 이라고 부른다.

 

참고

https://www.rfc-editor.org/rfc/rfc7540.txt

https://blog.npcode.com/2017/04/03/rest%EC%9D%98-representation%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80/