REST API 규칙은 많이 들어보았지만, "그래서 Representational State Transfer가 뭔데?" 물으면 대답할 수가 없었습니다.
블로그마다 설명이 다르다 보니 결국 REST의 아버지인 로이 필딩을 구글링하기 시작했고.. 좋은 아티클들을 발견해 나름대로 정리해보았습니다.
직접 들어가서 확인하시면 더 많은 도움을 얻을 수 있을 거예요!ㅎㅎ
참고
https://www.xfront.com/REST-Web-Services.html
https://shoark7.github.io/programming/knowledge/what-is-rest
REST (REpresentational State Transfer)
로이 필딩 Roy Fielding 이 박사 논문에서 설명한 네트워크 시스템의 아키텍쳐 스타일에서 시작된 용어입니다.
웹은 자원 Resource 으로 구성됩니다. 자원이란 우리의 관심사 Interest 에 해당하는 것을 말합니다.
예를 들면, 인프런 은 (김영한 님의 강의인) '모든 개발자를 위한 HTTP 웹 기본 지식'이라는 자원을 정의하고, 클라이언트는 해당 자원에 이런 URL로 접근합니다.
https://www.inflearn.com/course/http-웹-네트워크
그러면 이 자원의 표현 Representation 이 반환됩니다. 이 표현은 클라이언트 어플리케이션을 한 상태 State 에 둡니다.
클라이언트가 해당 페이지에서 다른 링크를 누르면 다른 자원의 표현이 반환되며 다른 상태에 놓이게 되는데, 이를 상태 전이 State Transfer라고 합니다.
로이 필딩의 논문에 쓰인 말입니다.
Representational State Transfer is intended to evoke an image of how a well-designed Web application behaves: a network of web pages (a virtual state-machine), where the user progresses through an application by selecting links (state transitions), resulting in the next page (representing the next state of the application) being transferred to the user and rendered for their use.
'Representational State Transfer'이란 이름은 잘 디자인된 웹 어플리케이션이 동작하는 방식을 이미지로 불러일으키려는 의도로 만들어졌습니다.
잘 디자인된 웹 어플리케이션이란 -> 사용자가 링크들을 선택하며 애플리케이션을 진행하고 (상태가 전이됨), 그 결과 다음 페이지 (어플리케이션의 다음 상태를 표현) 가 사용자에게 전달되고 그들의 용도에 따라 렌더링되는 웹 페이지들의 네트워크 (가상의 상태 머신)
결론
웹 개발을 하며 흔히 접하게 되는 REST API '규칙'은 사실 로이 필딩의 논문에서는 구체적인 언급이 없다고 합니다.
웹에 적합한 프로토콜을 위해 여러 제약을 만들긴 했지만 지금 통용되는 규칙은 이후의 개발자들이 쌓아 올린 것으로 보입니다.
그러니까...
이건 무조건 지켜야 돼! 안 지키면 나 죽어!!!
가 아니라, REST의 근원을 생각하며 적절하게 API를 개발하면 좋을 것 같습니다.
'Web' 카테고리의 다른 글
[Spring] Swagger 적용하기 (2) | 2023.12.27 |
---|---|
[Spring/Kotlin] Entity와 data class (2) | 2023.12.26 |
[Spring] Parameter 0 of constructor in A required a bean of type B that could not be found (3) | 2023.12.21 |
Spring을 사용하기 전에 알아야 할 개념들 (2) | 2023.12.19 |
SSR과 CSR, 그리고 Spring (2) | 2023.12.18 |