REST API

박민성·2022년 10월 24일

REST API란

API(Application Programming Interface)란

데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환가능 하도록 하는 것

REST API의 정의

  • REST 기반으로 서비스 API를 구현한 것
  • 최근 OpenAPI(누구나 사용할 수 있도록 공개된 API: 구글 맵, 공공 데이터 등), 마이크로 서비스(하나의 큰 애플리케이션을 여러 개의 작은 애플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처) 등을 제공하는 업체 대부분은 REST API를 제공한다.

REST API의 특징

  • 사내 시스템들도 REST 기반으로 시스템을 분산해 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 할 수 있다.
  • REST는 HTTP 표준을 기반으로 구현하므로, HTTP를 지원하는 프로그램 언어로 클라이언트, 서버를 구현할 수 있다.
  • REST API를 제작하면 델파이 클라이언트 뿐 아니라, 자바, C#, 웹 등을 이용해 클라이언트를 제작할 수 있다.

REST API 설계도 모델

REST - 0단계

HTTP 프로토콜을 사용하기만 해도 된다. → REST API의 출발 (기본단계)

해당 API를 REST API라고 할 수는 없다.
모든 요청에서 엔드포인트로 /appointment를 사용한다.

REST - 1단계

개별 리소스와의 통신을 준수한다.

개별 리소스에 맞는 엔드포인트(Endpoint)를 사용해야 한다는 것과 요청하고 받은 자원에
대한 정보를 응답으로 전달해야 한다.이때 응답으로 리소스를 전달할 때도 사용한 리소스에 대한
정보와 함께 리소스 사용에 대한 성공/실패 여부를 반환해야 합니다.

엔드포인트 (Endpoint) 작성밥법

1. 엔드포인트 작성방법 : 리소스에 집중해 명사 형태의 단어로 작성하는 것이 바람직하다.
2. 지양해야하는 방법: 동사, HTTP 메소드, 혹은 어떤 행위에 대한 단어 사용은 지양한다.

ex 1) 예약 가능한 시간 확인 요청 -> "엔드포인트" : /doctors/허준
→ 응답: 데이터(리소스) -> 의사 허준의 예약 가능한 시간대
ex 2) 특정 시간에 예약 요청 -> "엔드포인트" : /slots/123 실제 변경되는 리소스 요청
-> 예약이 불가능할 경우 ? 응답 : 리소스 사용에 대한 실패 여부를 포함한 응답을 받는다.

REST - 2단계(HTTP API)

CRUD에 맞게 적절한 HTTP 메소드를 사용하는 것에 중점을 둔다.

→ HTTP 메소드를 사용할 때 규칙을 확인하고 사용해야한다.
관련 리소스를 클라이언트가 Location 헤더에 작성된 URI를 통해 확인 할 수 있도록 해야,
완벽하게 REST 성숙도 모델의 2단계를 충족한 것이라고 본다.

ex 1) 예약 가능한 시간을 조회(READ)하기 위해 GET 로 요청
→ GET 메소드는 body를 가지지 않기 때문에 query parameter를 사용하여 리소스 전달
-> 응답: 데이터(리소스) -> 의사 허준의 예약 가능한 시간대

ex 2) 특정 시간에 예약을 생성(CREATE)하기 위해 POST 로 요청
→ 응답 : 새롭게 생성된 리소스 → 상태코드 201 Created 로 명확하게!

REST - 3단계(HTTP API)

HATEOAS, 하이퍼미디어 컨트롤(Hypertext As The Engine Of Application State)을 적용한다.

1. 2단계와 거의 동일하지만, 응답에는 리소스의 URI를 포함한 링크를 넣어 새로운 기능에
접근할 수 있도록 하는 것이 3단계의 중요 포인트이다.
2. 응답에 들어가게 되는 링크 요소 : 응답을 받은 다음에 할 수 있는 다양한 행동 을 위해
많은 하이퍼미디어 컨트롤을 포함한다.

ex) 예약 가능 시간을 확인 요청-> 응답 : 예약을 할 수 있는 링크를 삽입하여 응답

profile
안녕하세요 꾸벅꾸벅!!!

0개의 댓글