본문 바로가기
Codestates FE

[Codestates FE] S2U8 - REST API

by 진아링 2023. 3. 29.
728x90
반응형

## REST API

REST API는 웹에서 사용되는 데이터나 자원을 HTTP URI로 표현하고, HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식을 말한다.

 

## REST API 성숙도 모델

성숙도 모델은 총 4단계로 나누어져서 각 단계의 조건에 만족할 수록 REST API에 가까워진다고 한다.

 

### Level 0

Level 0은 웹 매커니즘을 사용하지 않고 HTTP를 원격 호출을 위한 전송 시스템으로 사용하는 경우이다. RPC(Remote Procedure Call)처럼 리소스 구분 없이 설계된 HTTP API이다.

 

하나의 End-point를 사용해서 HTTP Method도 반드시 POST가 된다. 그래서 서로 다른 매개변수를 통해서만 여러 동작을 하게 된다.

 

### Level 1 : Resources

Level 1은 리소스 개념을 도입한다.  모든 요청을 하나의 End-point로 보내는 것이 아니라 개별 리소스와 통신하게 된다.

 

HTTP Method는 GET과 POST만 사용하고 StatusCode는 무조건 200으로 전달한다. 헤더에 Content-Type이나 Cache 관련 정보도 제공하지 않는다.

 

### Level 2 : HTTP Verbs

Level2는 4가지 HTTP Method를 사용해서 CRUD를 표현하고 StatusCode도 활용하여 반환한다.

 

URI에는 행위(Action)가 포함되지 않고 HTTP Method로 표현한다. GET은 매번 같은 결과를 반환하고, 헤더에 Content-Type을 제공하고 멱등성을 보장하는 GET의 경우 캐시가 적용된다.

 

현재 가장 많은 REST API가 이 단계에 해당한다고 한다.

 

### Level 3 : Hypermedia Controls

마지막 단계인 Level 3이다. API 서비스의 모든 End-point를 최초 진입점이 되는 URI를 통해 Hypertext Link 형태로 제공한다.

 

추가적으로 다음 Request에 필요한 End-point까지 제공을 한다. 이는 Uniform Interface의 HATEOAS를 의미한다.

 

## API KEY

이는 신분증의 역할이라고 할 수 있다. 일부 허가된 사용자들에게만 허가되며 추적관리를 위해 만들어졌다.

 

그러나 공공기관 등 정보를 공개로 설정할 수 있는데, 이를 Open API라고 한다. 접근은 누구나 가능하지만, 정보요청 횟수나 정보량 제한 등의 제한이 있을 수 있다.

 

 

728x90
반응형

댓글