-
RESTful API 알아보기네트워크 2023. 4. 26. 21:05
REST API란 무엇인가?
개인프로젝트를 하면서 나름 RESTful API를 이해했다고 생각했지만, 멘토의 (RESTful API가 정확히 뭔가요?)질문에 내가 알고 있다고 착각했던 현실을 마주쳤다. 모르는 것을 깨우쳐준 멘토님께 감사를 드리며, REST API 더 나아가 RESTful API가 뭔지 정리해보려 한다.
-> REST API를 정리하기 전, 의미부터 짚고 넘어가 보자
(Representational State Transfer(REST)는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처입니다.)
그렇다고 한다.... 내가 이해하기 쉽게 다시 정리해보자.
Representational(나타내는, 대표하는) State(상태) Transfer(전송) => 무엇인가 대표하는 것을 전송하는 걸 말한다.
REST API구성
-자원(RESOURCE) - URI
-행위(Verb) - HTTP METHOD
-표현(Representations)
RESTful System 6 guiding constrains
1.Client-Server architecture
-> 서버는 클라이언트가 브라우져든지 모바일이든지 브라우져뿐만 아니라 다양한 애플리케이션에 데이터를 제공할 수 있는 아키텍처를 유지해야 한다.
2.StateLessness (http 프로토로콜에서 자동으로 우리가 얻어갈 수 있다)
-> '상태가 없는' 것을 유지해야 한다. 즉, 하나의 요청이 다른 요청과 연결되는, '상태가 있는' 것이 아니라 상태가 없는 상태로 서버를 디자인해야 한다.
3.Cacheability (http 프로토로콜에서 자동으로 우리가 얻어갈 수 있다)
-> 캐시가 가능하다면 캐시를 할 수 있는 것으로 디자인해야 한다.
4.Layered System
-> 클라이언트가 서버에게 얼마나 많은 서버가 있는지, 또는 서버 사이에 게이트웨이 서버가 있든지 없든지 그런 것들을 상관하지 않고 공통된 서버에서 제공하는 API 하나로api하나로 사용할 수 있도록 설계해야 한다.
5.code on demand (option)
-> 클라이언트가 원한다면, 클라이언트가 수행하여 하는 코드를 서버에서 클라이언트로 보내줄 수 있는 것을 말한다.
6.Uniform interface(RESTful API를 결정하는 중요한 요소)
-> (4가지 특징이있다.)
1. (Resource Identification in requests)
클라이언트 요청에서 서버에 있는 어떤 자원을리소스를(자원, 도메인 데이터) 원하는지 식별할 수 있어야 하며, 서버에 어떤 형태로 데이터가 저장돼 있든 서버에서 어떻게 관리하든지 상관없이 클라이언트가 이해할 수 있는 포맷(eg. HTML, JSON)으로 데이터를 보내줘야 한다.
2. (Resource manipulation through representations)
서버로부터 받은 해당 도메인을 대표할 수 있는 데이터를 통해서 해당 데이터를 어떻게 더 처리할 수 있는지에 대한 모든 정보를 알 수 있어야 한다. (이 부분을 봤을 때, REST API란api란 단순히 'URL을 어떻게 디자인하는가'가 아니라 그 외적인 것들을 더 포함하고 있다는 것을 알 수 있다)
3. (Self-descriptive messages)
서버에서 보내는 응답 데이터 안에는 반드시 클라이언트가 데이터를 어떻게 처리해야 하는지 설명이 되어 있어야 한다. 즉, 서버에서 보내는 반응에서 데이터 타입은 무엇인지 알려줘야 한다.
4.(Hypermedia as the engine of application state(HATEOAS))
클라이언트가 서버에게 어떤 요청을 했을 때, 서버는 이 요청에서 할 수 있는 모든 액션에 대해서 어떤 URL을 써야 하는지 다 링크된 URL을 보내주는 것을 뜻한다.