본문 바로가기
Server

REST API

by 이히힣 2022. 8. 5.

REST API(Representational State Transfer)

 

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

 

REST 성숙도 모델은 총 4단계(0~3단계)로 나누어집니다.

 

로이 필딩은 이 모델의 모든 단계를 충족해야 REST API라고 부를 수 있다고 주장했지만 실제로 3단계까지 지키기 어렵기 때문에

2단계까지만 적용해도 좋은 API 디자인이라고 볼 수 있고, 이런 경우를 HTTP API 라고도 부른다.

 

 

 

 

 

REST 성숙도 모델 - 0단계

 

REST 성숙도 모델에 따르면, 0단계에서는 단순히 HTTP 프로토콜을 사용하기만 해도 되지만, 해당 API를 REST API라고 할 수는 없다.

0단계는 REST API를 작성하기 위한 기본 단계

 

 

 

REST 성숙도 모델 - 1단계

 

REST 성숙도 모델에 따르면, 1단계에서는 개별 리소스(Resource)와의 통신을 준수해야 한다.

REST API는 웹에서 사용되는 모든 데이터나 자원(Resource)을 HTTP URI로 표현한다.

모든 자원은 개별 리소스에 맞는 엔드포인트(Endpoint)를 사용해야하며 요청하고 받는 자원에 대한 정보를 응답으로 전달해야 한다.

 

 

 

REST 성숙도 모델 - 2단계

 

REST 성숙도 모델 2단계에서는 CRUD에 맞게 적절한 HTTP 메서드를 사용하는 것에 중점이다.

 

 

 

[HTTP 메서드 규칙]

https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods

 

HTTP request methods - HTTP | MDN

HTTP defines a set of request methods to indicate the desired action to be performed for a given resource. Although they can also be nouns, these request methods are sometimes referred to as HTTP verbs. Each of them implements a different semantic, but som

developer.mozilla.org

 

 

REST 성숙도 모델 - 3단계

 

REST 성숙도 모델 3단계는 2단계와 동일하지만, 응답에 리소스의 URI를 포함한 링크가 포함되어야 한다.

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

 

 

 

 

 


Open API

 

공공데이터에 쉽게 접근할 수 있도록 정부는 Open API의 형태로 공공데이터를 제공하고 있다.

Open API라도 정해진 이용 수칙이 있고, 그에 따라 제한사항 (가격, 정보 등) 이 있을 수 있다.

 

https://www.data.go.kr/

 

공공데이터 포털

국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase

www.data.go.kr

 

https://openweathermap.org/api

날씨 API를 받을 수 있는 사이트.

 

 

 

API Key

 

API key는 서버의 문을 여는 열쇠이며 API를 이용하기 위해서는 API Key가 필요하다.

서버를 운용하는 데에 비용이 발생하기 때문에 서버 입장에서 아무런 조건 없이 익명의 클라이언트에게 데이터를 제공할 의무는 없다.

API Key가 필요한 경우에는 로그인한 이용자에게 자원에 접근할 수 있는 권한을 API Key의 형태로 제공하고, 데이터를 요청할 때 API key를 같이 전달해야 원하는 응답을 받을 수 있다.

 

'Server' 카테고리의 다른 글

mongoDB 데이터 연결하기 + 데이터 연결 안되는 사람? 🙌 (mac)  (0) 2023.06.06
AJAX  (0) 2022.08.04