[Network] REST API

sywoo0109·2023년 7월 14일
0

Network

목록 보기
2/4
post-thumbnail

1. REST API

  이번 포스트에서 다루려고 하는 REST API에서 REST는 Representational State Transfer의 줄임말로 웹 기반 시스템에서 리소스를 다루기 위한 아키텍쳐로 이 원칙에 따라 설계된 API들을 주로 RESTful API라고 부른다. 오늘은 리처드슨이 주장한 REST 성숙도 모델을 통해 REST API란 무엇인지 알아보려고 한다.

  우선 0단계는 HTTP 프로토콜의 사용이다. 따라서 이 단계는 아직 REST API라고 보기는 좀 어렵고 웹 서비스가 실질적으로 동작하는지의 여부만 보는 단계이다.

  다음 1단계는 개별 리소스와의 통신을 준수해서 각각의 리소스를 식별하는 단계이다. 즉 웹에서 아용되는 모든 데이터나 리소스에 고유한 식별자인 URI가 부여되어 있다. 따라서 그것을 이용하기 위해서는 알맞은 엔드포인트를 사용해서 요청하며 반환되는 정보도 해당 데이터 접근 및 리소스 사용에 대한 성공, 실패 여부를 같이 반환하게 된다.

  2단계는 목적에 맞는 HTTP 메서드를 사용하는 단계이다. 위의 예시들을 보면 어떤 작업을 하든지 메서드는 모두 POST인 것을 확인할 수 있다. 하지만 2단계부터는 생성의 POST, 조회의 GET, 수정의 PUT, 삭제의 DELETE 등 CRUD의 목적에 맞는 메서드를 사용해야 한다. 따라서 응답 코드도 더 세분화되어서 어떤 작업이 완료되었거나 혹은 어떤 부분에서 에러가 발생하는지를 더 자세하게 응답해야 한다. 보통 2단계까지만 적용된 API도 충분히 잘 디자인된 API라고 볼 수 있다. 엄밀히 따지면 3단계까지 충족하지 못한 API는 RESTful하다고 볼 수 없지만 실제로 사용되는 모범적으로 디자인된 API들도 3단계까지 적용되 있는 경우는 많지 않다고 알려져있다. 따라서 무조건적으로 3단계까지 적용해야만 좋은 API는 아니라는 것을 알 수 있다.

  3단계는 흔히 HATEOAS(Hypermedia As The Engine Of Application State)라는 약어로 표현되는 하이퍼미디어 컨트롤을 적용하는 단계이다. 요청 메세지는 2단계와 동일하지만 응답 메세지에는 리소스의 URI를 포함한 링크 요소를 삽입해서 작성한다. 이 링크는 주로 해당 작업 이후에 바로 다음에 하게 될 작업이나 혹은 작업 상황을 조회할 수 있는 URI와 메서드를 안내하는 역할을 하게 된다. 따라서 클라이언트 개발자 입장에서는 이 응답만 보고도 더 쉽고 효율적으로 리소스에 접근하고 기능을 활용할 수 있게 된다.

0개의 댓글