REST API

신병규·2022년 8월 5일
0

API 란

Application Programming Interface
서버는 클라이언트에게 리소스를 잘 활용할 수 있도록 인터페이스(interface)를 제공
보통 인터넷에 있는 데이터를 요청할 때에는 HTTP라는 프로토콜을 사용하며, 주소(URL, URI)를 통해 접근

REST 란

자원의 표현을 가지고 상태를 전달하는 소프트웨어 아키텍쳐의 한 형식을 말한다. REST는 HTTP URI를 통해 Resource를 명시하고 HTTP Method를 통해 해당 Resource에 대한 CRUD Operation을 적용하는 것을 의미한다. 정리하자면 REST는 Resource가 있고 HTTP Method를 통해 Resource를 처리하도록 설계된 아키텍쳐를 의미한다.

REST 4가지 속성

  1. 서버에 있는 모든 resource는 각 resource 당 클라이언트가 바로 접근할 수 있는 고유 URL이 존재합니다.
  2. 모든 요청은 클라이언트가 요청할 때 마다 필요한 정보를 주기 때문에 서버에서는 세션 정보를 보관할 필요가 없습니다. 그렇기 때문에 서비스에 자유도가 높아지고 유연한 아키텍쳐 적응이 가능합니다.
  3. HTTP 메소드를 사용한다는 점입니다. 모든 resource는 일반적으로 HTTP 인터페이스인 GET, POST, PUT, DELETE 4개의 메소드로 접근되어야 한다는 것입니다.
  4. 서비스 내에 하나의 resource가 주변에 연관된 리소스들과 연결되어 표현이 되어야 한다는 점입니다.

REST API 란

(Representational State Transfer Application Programming Interface)
웹에서 사용되는 데이터나 자원(Resource)을 HTTP URI로 표현하고, HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식

REST API Design

REST API를 작성할 때는 몇 가지 지켜야 할 규칙들이 있습니다. 로이 필딩이 논문에서 제시한 REST 방법론을 보다 더 실용적으로 적용하기 위해 레오나르드 리차드슨(Leonard Richardson)은 REST API를 잘 적용하기 위한 4단계 모델을 만들었습니다.

로이 필딩은 이 모델의 모든 단계를 충족해야 REST API라고 부를 수 있다고 주장했습니다. 그러나 실제로 엄밀하게 3단계까지 지키기 어렵기 때문에 2단계까지만 적용해도 좋은 API 디자인이라고 볼 수 있고, 이런 경우를 HTTP API 라고도 부릅니다.

REST 성숙도 모델 - 0단계

POX(plain old xml)를 주고 받는 단순한 RPC 스타일 시스템
(RPC(Remote Procedure Call): 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 함수나 프로시저를 실행 할 수 있는 프로세스간 통신 기술)

즉 0단계에서는 단순히 HTTP 프로토콜을 사용하기만 해도 된다. 물론 이 경우, 해당 API를 REST API라고 할 수는 없으며, 0단계는 REST API를 작성하기 위한 기본 단계이다.

REST 성숙도 모델 - 1단계

리소스를 도입한다. 모든 요청을 단일 서비스 엔드포인트로 보내는 것이 아니라 개별 리소스와 통신한다.
요청에 따른 응답으로 리소스를 전달할 때에도 사용한 리소스에 대한 정보와 함께 리소스 사용에 대한 성공/실패 여부를 반환해야 한다.

REST 성숙도 모델 - 2단계

GET,PUT,DELETE 등 다른 Method를 사용할 수 있다. 즉 HTTP Method 각각에 의미를 부여함으로써 Action처럼 활용할 수 있음. (Level0,1보다 HTTP의 사용법에 가능한 가깝게 사용)

HTTP 메서드를 사용할 때 유의사항
1. GET 메서드 같은 경우는 서버의 데이터를 변화시키지 않는 요청에 사용해야한다.
2. POST 메서드는 요청마다 새로운 리소스를 생성하고 PUT 메서드는 요청마다 같은 리소스를 반환한다다. 이렇게 매 요청마다 같은 리소스를 반환하는 특징을 멱등(idempotent)하다고 한다. 그렇기 때문에 멱등성을 가지는 메서드 PUT과 그렇지 않은 메서드POST는 구분하여 사용해야 한다.
3.PUT 메서드와 PATCH 메서드도 구분하여 사용해야 한다. PUT은 교체, PATCH는 수정의 용도로 사용한다.

REST 성숙도 모델 - 3단계

HATEOAS (Hypertext As The Engine Of Application Sates)도입
Client의 State를 Link를 이용하여 control할 수 있는 단계. Client의 Status는 URI로 표현되므로 이러한 Status 변화에 관계된 새로운 URI를 Server로부터 받고 이를 이용하여 Status를 변화시키는 것을 HATEOAS라고 부른다.

3단계의 요청은 2단계와 동일하지만, 응답에는 리소스의 URI를 포함한 링크 요소를 삽입하여 작성해야 한다.
즉 응답 내에 새로운 링크를 넣어 새로운 기능에 접근할 수 있도록 하는 것이 3단계의 핵심 포인트이다.

0개의 댓글