Rest(ful) API란?

ABL·2023년 5월 24일
0
post-custom-banner

Roy가 발표한 Rest API는 요즘 시대에서는 잘 지켜지고 있진 않은 것 같다.
Rest 아키텍처를 진짜로 준수한 API는 Restful API라고 통칭하는 것 같은데, 잘 모르는 상태에서 두 개념을 모두 접한 사람들은 상당히 헷갈릴 수도 있다고 생각이 든다.
여기서는 Rest 아키텍처를 엄격하게 지킨 형식을 설명하겠다.

시작하기에 앞서 Rest API는 반드시 지켜야 할 규격이 아니고, 상황에 따라 유연하게 사용하는 것을 추천하는 권고사항에 불가할 뿐이란 것을 말하고 싶다.

Rest(ful) API에서 지켜야 할 표준 룰은 다음과 같다.

  • client-server : 클라이언트와 서버는 반드시 분리되어야 함
  • stateless : 상태를 저장하지 않음
  • cacheable : 캐싱 기능을 적용할 수 있어야 함
  • uniform interface : 플랫폼이나 언어에 따른 제약이 없음
  • layered system : 서버는 보안/로드 밸런싱/암호화 등 다중 계층으로 구성함
  • code-on-demand (Optional) : client에 보내는 데이터를 바로 실행 가능한 코드 작성

이 중 client-server, stateless, cacheable, layered system는 비교적 잘 지켜지는 편이지만, uniform interfacecode-on-demand는 보편적으로 지켜지지 않는 편에 속한다. 이 두가지만 자세히 살펴보자.


uniform interface
Resource에 대한 요청을 통일되고, 한정적으로 수행하는 아키텍처 스타일을 의미한다. 이것은 요청을 하는 Client가 플랫폼(Android, Ios, Jsp 등) 에 무관하며, 특정 언어나 기술에 종속받지 않는 특징을 의미한다.uniform interface를 위한 조건은 다음과 같다.

  • identification of resources : Resource가 uri로 식별되어야 함
  • self-descriptive message : 스스로 잘 표현해야함
  • manipulation of resources through representation : representation 전송을 통해서 리소스를 조작해야함
  • Hypermedia As The Engine Of Application State(HATEOAS) : 애플리케이션 상태는 하이퍼링크를 통해 전이되어야함
    실제로는 HATEOAS를 엄격하게 지키지 않고, Post요청 후 상태를 확인하는 용도의 Get 요청 uri 정도를 리턴해준다고 한다. 요청 관련 모든 uri를 넣어서 주게 된다면 유지 보수성도 현저히 떨어지며, API 명세가 체계적으로 이뤄진다면 굳이 추가하지 않아도 된다.

code-on-demand
클라이언트에서 실행 가능한 code를 제공하며, 이는 주로 Javascript에서 가능하다. 최근에는 현직에서 잘 사용하지 않는 규칙이라고 한다.



출처

https://www.youtube.com/watch?v=RP_f5dMoHFc&ab_channel=naverd2
https://dingue.tistory.com/11

profile
💻
post-custom-banner

0개의 댓글