JunOnJuly 2023. 10. 28. 23:04
728x90

RESTful api


개념

RE presentational

S tate

T ransfer

의 약자로 api 작동 방식에 대한 소프트웨어 아키텍쳐입니다. 즉 네트워크 상태의 전이에 대한 표현입니다. 일반적으로 Resource(URI), Method(GET, POST 등), Representation of Resource(데이터의 표현 방식, JSON, XML 등) 을 통해 상태를 표현한다면 우리는 RESTful 한 api 를 작성했다고 말 합니다.

규칙

REST 아키텍쳐는 몇 가지 규칙이 있습니다.

균일한 인터페이스

서버가 표준 형식으로 정보를 전송하는가 에 관한 문제입니다. 예를 들어 서버는 데이터를 텍스트로 저장하고 HTML 형식으로 전송할 수 있습니다.

  1. 요청은 리소스를 식별해야 합니다. 이를 위해 균일한 리소스 식별자를 사용합니다.
  2. 클라이언트는 원하는 경우 리소스를 수정하거나 삭제하기에 충분한 정보리소스 표현에서 가지고 있습니다. 서버는 리소스를 자세히 설명하는 메타데이터를 전송하여 이 조건을 충족합니다.
  3. 클라이언트는 표현을 추가로 처리하는 방법에 대한 정보를 수신합니다. 이를 위해 서버는 클라이언트가 리소스를 적절하게 사용할 수 있는 방법에 대한 메타데이터가 포함된 명확한 메시지를 전송합니다.
  4. 클라이언트는 작업을 완료하는 데 필요한 다른 모든 관련 리소스에 대한 정보를 수신합니다. 이를 위해 서버는 클라이언트가 더 많은 리소스를 동적으로 검색할 수 있도록 표현에 하이퍼링크를 넣어 전송합니다.

이상의 규칙을 지킬 때 균일한 인터페이스라고 말합니다.

무상태

REST 아키텍쳐는 서버가 이전의 모든 요청과 독립적으로 모든 클라이언트 요청을 완료해야 합니다. 클라이언트는 임의의 순서로 리소스를 요청하고 모든 요청은 다른 요청과 분리됩니다. 즉 서버는 매번 요청을 완전히 이해해서 이행할 수 있어야 합니다.

캐시가능성

RESTful 웹서비스는 서버 응답 시간을 최적화하기 위해 클라이언트 또는 중개자에 일부 응답을 저장하는 캐싱을 지원해야합니다.

 

이상의 규칙들 외에도 많은 규칙들이 존재하지만 해당 글에는 세 가지 규칙만 설명하도록 하겠습니다.


RESTful API 를 사용하면 클라이언트-서버 상호 작용을 최적화하기 때문에 효율적으로 크기를 조정할 수 있습니다. 또 캐싱은 일부 클라이언트-서버 상호 작용을 부분적으로 제거하기 때문에 성능을 저하시키는 병목현상을 줄일 수 있습니다. 또 클라이언트와 서버의 완전한 분리를 지원해 각 부분이 독립적으로 발전할 수 있게 합니다. 또 HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용 가능하니 다양한 브라우저나 디바이스로 뻗어나가는 지금 꼭 개념을 알아두고 사용해야 합니다.

728x90