본문 바로가기
boostcource/boostcourse_web programming

REST API

by sgyeong 2024. 4. 27.

* API (응용 프로그램 프로그래밍 인터페이스)

응용 프로그램에서 사용할 수 있도록 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스

주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다.

 

 

REST API
REST 형식의 API이다. REST API는 핵심 컨텐츠 및 기능을 외부 사이트에서 활용할 수 있도록 제공되는 인터페이스이다.

예를 들어, 네이버에서 블로그에 글을 저장하거나, 글 목록을 읽어갈 수 있도록 외부에 기능을 제공하거나, 우체국에서 우편번호를 조회할 수 있는 기능을 제공하거나, 구글에서 구글 지도를 사용할 수 있도록 제공하는 것을 말한다.

서비스 업체들이 다양한 REST API를 제공하면서 클라이언트는 REST API를 조합한 어플리케이션을 만들 수 있게 되었다. 이것을 매시업(Mashup)이라고 한다.

 

 

REST가 지켜야 하는 스타일

- client-server

- stateless

- cache

- uniform interface

- layered system

- code-on-demand (optional)

 

위의 조건들을 지켜야만 REST라고 할 수 있다. 

 

HTTP프로토콜을 사용한다면 client-server, stateless, cache, layered system, code-on-demand 등에 대해서는 쉽게 구현되지만 문제는 uniform interface이다.

 

* uniform interface의 스타일

- 리소스가 URI로 식별되어야 한다.
- 리소스를 생성, 수정, 추가하고자 할 때 HTTP 메시지에 표현해서 전송해야 한다.

- 메시지는 스스로 설명할 수 있어야 한다. (Self-descriptive message)
- 애플리케이션의 상태는 Hyperlink를 이용해 전이되어야 한다. (HATEOAS)

 

메시지가 스스로 설명할 수 있어야 하는 부분과 HATEOAS를 지원하는 것은 API로는 쉽지 않다. 응답 결과에 보통 JSON 메시지를 사용하게 되는데, 이 JSON메시지가 어디에 전달되는지, 그리고 JSON메시지를 구성하는 것이 어떤 의미를 표현해야만 메시지 스스로 설명할 수 있다고 말하는데 그게 쉽지 않다.

 

REST API는 쉽지 않기 떄문에 보통 Web API (또는 HTTP API)를 사용한다.

REST의 uniform interface를 지원하는 것은 쉽지 않기 때문에 많은 서비스가 REST에서 바라는 것을 모두 지원하지 않고 API를 만든다.

'boostcource > boostcourse_web programming' 카테고리의 다른 글

Web API -1  (0) 2024.04.28
Web API  (0) 2024.04.27
JDBC -4  (0) 2024.04.27
JDBC -3  (0) 2024.04.27
JDBC -2  (0) 2024.04.25