REST API란 무엇이고 성숙도 모델은 무엇인가??

FAST FOX·2023년 3월 29일
0

학습일지

목록 보기
28/39
post-thumbnail
post-custom-banner

REST API란??

REST API에서 REST는 "Representational State Transfer"의 약자로, 애플리케이션 개발의 아키텍처 중 하나이다.
📌 아키텍처 : 애플리케이션을 설계, 제작하는데 사용하는 패턴과 기술의 총칭

우선 REST의 방식은 다음과 같다.

  1. 웹 애플리케이션 상에 존재하는 모든 리소스에 대해 고유의 URI를 부여한다.

  2. HTTP method를 이용해 리소르에 대해 CRUD 명령을 적용한다.

즉, REST란 URI가 부여된 리소스의 상태를 응답(JSON이나 XML로 나타남)으로 전송한다는 의미라고 해석할 수 있다.

이런 REST 방식을 고려하면 만든 API를 REST API라고 부르는 것이다.
최근 OpenAPI, 마이크로 서비스 등을 제공하는 업체 대부분은 REST API를 제공한다.

📌 마이크로 서비스 : 하나의 큰 애플리케이션을 여러 개의 작은 애플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처

REST API 작성 규칙

REST API를 작성할 때는 지켜야 하는 몇가지 규칙들이 있다. 이를 4단계의 모델로 만든 것이다 리차드슨의 성숙도 모델(RMM)이다.

REST 성숙도 모델 0단계

0단계는 단순히 HTTP 프로토콜을 사용하기만 하면 0단계라고 할 수 있다. 하지만 0단계의 API를 REST API라고 할 수는 없고 REST API를 작성하기 위한 기본 단계라고 봐야한다.

밑의 예시가 리소스 URI,HTTP 메소드 등 아무것도 사용하지 않고 HTTP프로토콜 형식을 사용하기만 0단계 상태이다.

REST 성숙도 모델 1단계

1단계에서는 개별 리소스와의 통신을 준수해야 하는 것이 조건이다. 좀 더 풀어서 이야기 해보자면, 앞서 REST에서는 리소스에 URI를 제공한다고 했었고, 모든 요청을 단일 서비스 엔드 포인트로 보내는 것이 아니라 리소스 URI를 엔드 포인트로 설정하여 각각의 리소스와 통신하는 것이다.

밑의 예시를 보면 0단계에서는 엔드포인트가 /appointment로 모두 동일 했지만 1단계에서는 엔드포인트가/doctor/허준/slots/123으로, 접근하고자 하는 리소스의 URI를 입력한다.

❗️엔드포인트 작성 시에는 동사,HTTP 메소드, 흑은 어떤 행위에 대한 단어 사용은 지양하고, 리소스에 집중해 명사 형태의 단어로 작성해야 한다

❗️요청에 따른 응답을 줄 때 리소스 사용에 대한 성공/실패 여부를 함께 반환해야 한다.

REST 성숙도 모델 2단계

이전 0단계와 1단게에서는 모든 요청을 POST 메서드 하나만을 사용했다.
2단계에서는 클라이언트의 요청을 CRUD에 맞게 각각의 메서드를 사용하는게 조건이다.
요청의 종류에 따라 사용되는 메소드는 다음과 같다.

메서드를 사용할 때 몇가지 규칙이 있다.

  • GET메서드는 서버의 데이터를 변화시키지 않는 요청에 사용해야한다.

  • POST메서드는 요청마다 새로운 데이터를 추가한다. 즉 멱등하지 않다. PUTPATCH는 같은 작업을 계속해서 반복해도 결과가 같다. 즉 멱등하다. 이 멱등성을 잘 이해하고 POSTPUT/PATCH를 적절하게 사용해야한다.

  • PUT메소드를 사용할 때 수정할 값만 보내고 나머지 값들을 보내지 않는다면 나머지 데이터의 값들은 null로 수정된다. PATCH의 경우 전달받지 못한 데이터의 값은 그대로 유지하고 전달받은 데이터의 값만 수정한다.

📌 멱등성 : 같은 작업을 반복해도 반환되는 값은 같은 특징을 의미한다.

다음은 성숙도 2단계를 적용한 예시이다.

예시는 요청의 목적에 맞게 GETPOST를 적절하게 사용하였다.

이때 단순히 데이터를 조회하기만 하는 GET은 body가 없기 때문에 필요한 리소스를 query parameter를 사용하여 전달하였다.

POST는 body에 추가할 데이터를 넣어주었고 요청이 성공했고, 응답에는 201 created라는 상태 메시지를 나타내주며 Location헤더에 추가된 리소스의 URI를 넣어주어 클라이언트가 확인할 수 있도록 해주었다.

REST 성숙도 모델 3단계

성숙도 모델의 마지막 단계인 3단계에서는 HATEOAS를 적용하는 것이다.
HATEOAS는 Hypermedia As The Engine Of Application State)의 약어로 응답에 리소스의 URI를 포함한 링크 요소를 추가하는 것이다.

위의 예시에서는 특정 날짜에 예약 가능한 시간을 GET하자 예약이 가능한 시간의 데이터와 그 시간에 예약을 할 수 있는 링크를 보내준다.
링크로 들어가서 예약을 POST하자 추가된 데이터의 URI를 Location헤더에 보내주고 데이터를 body에 넣어서 보내주는데 이때 에약 내역을 GET할 수 있는 링크와 예약을 DELETE할 수 있는 링크를 함께 보내준다.

Open API

공공데이터에 쉽게 접근할 수 있도록 정부는 Open API의 형태로 공공데이터를 제공하고 있다. Open API
포털에 접속해서 원하는 키워드를 검색하면 키워드와 관련된 API를 확인할 수 있다.

Open API는 누구에게나 열려있지만 무제한적으로 사용할 수 있는 것은 아니다. API마다 정해진 이용 수칙이 있고, 그 이용 수칙에 따라 제한사항(가격,정보 제한 등)이 있을 수 있다.

API Key

서버를 운영하는데 있어서 비용이 발생하기 때문에 운영자는 익명의 클라이언트에게 데이터를 제공할 의무는 없다.
API Key가 필요한 경우에는 로그인한 이용자에게 권한을 API Key의 형태로 제공하고, 데이터를 요청할 때 이 key를 함께 전달해야 데이터를 받을 수 있도록 한다.

profile
준비하는 개발자
post-custom-banner

0개의 댓글