Restful API란?

Zinny·2023년 6월 1일
0
post-thumbnail

부트캠프를 시작하기 전, API라는 말을 들어도 보고 누군가가 설명해둔 글도 봤지만 잘 이해가 가지 않았다. 자바스크립트를 공부하면서도 직접 써보기 전까지는 어떤 건지 제대로 알지 못했다. 공부를 하다보니 API 외에도 Restful API라는 말을 많이 듣게 되었다. 그래서 이번에 확실하게 어떤 개념인지, 어떻게 사용하는지 정리하려한다.

API란?

API란 Application Programming Interface의 약자로, 서로 다른 소프트웨어 시스템 간에 효율적인 통신과 상호작용을 위해 정의된 규칙의 집합이다. API는 클라이언트(사용자)와 웹 리소스 사이의 중간 매개체로 볼 수 있고 클라이언트가 애플리케이션의 기능이나 데이터에 접근하고 상호 작용할 수 있도록 하는 인터페이스이다.

인터페이스(interface)란, 사전적으로는 두 개체 사이에서 상호작용할 수 있는 접점이나 경계면을 의미한다. 컴퓨터 프로그래밍에서는 인터페이스는 클래스, 모듈 등에서 외부에 제공하는 메서드, 속성, 데이터 형식 등을 의미하며, 다른 시스템 등에서 해당 인터페이스를 사용함으로써 상호작용할 수 있습니다.

예를 들어, 오늘의 날씨 정보를 얻기 위해 클라이언트는 해당 날씨 정보를 제공하는 서버의 API를 호출하고 요청을 보내어 정보를 받아올 수 있다. API는 단순히 정보를 요청하고 받는 게이트웨이 역할을 하는 것뿐만 아니라, 데이터를 생성, 수정, 삭제하는 등의 작업을 수행할 수도 있다.

즉, API는 서로 다른 소프트웨어 시스템이 효율적으로 상호작용하기 위한 규칙을 제공하며, 이를 통해 클라이언트는 애플리케이션의 기능과 데이터에 접근하여 활용할 수 있게 된다.

Restful API

그렇다면 Restful API는 무엇일까? API의 하나의 종류로 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처이다.

소프트웨어 아키텍처는 소프트웨어의 골격이 되는 기본구조이다. 소프트웨어 시스템을 설계하고 구성하는 데 사용되는 구조적인 원칙, 패턴, 규칙, 개념 등의 집합으로 시스템의 구조와 구성 요소들 간의 상호작용 방식, 데이터 흐름, 기능 분배 등을 정의하여 시스템의 기반이 되는 틀을 제공한다.
따라서, 소프트웨어 아키텍처는 소프트웨어 시스템을 설계하고 개발하기 위한 기반으로서, 시스템의 구조와 동작을 결정하고 이를 통해 효율적이고 안정적인 소프트웨어 시스템을 구축하는 데 중요한 역할을 한다.

Representational State Transfer(REST) 처음에 인터넷과 같은 복잡한 네트워크에서 통신을 관리하기 위한 지침으로 만들어졌는데, REST 기반 아키텍처를 사용하여 대규모의 고성능 통신을 안정적으로 지원할 수 있다. 쉽게 구현하고 수정할 수 있어 모든 API 시스템을 파악하고 여러 플랫폼에서 사용할 수 있다.

RESTful API는 Representational State Transfer(REST) 아키텍처 원칙을 따르는 API로, 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스이다. 많은 애플리케이션은 다른 애플리케이션들과 소통하는 경우가 많다. RESTful API는 안전하고 신뢰할 수 있으며 효율적인 소프트웨어 통신 표준을 따르기 때문에 많이 사용된다.

RESTful API의 작동

RESTful API는 클라이언트가 서버에 접속하여 리소스를 요청하는 기능을 제공한다. 클라이언트는 리소스가 필요할 때 해당 API를 사용하여 서버에 접속한다. 보통 API 제공자는 서버 애플리케이션 API 문서에서 클라이언트가 REST API를 어떻게 사용해야 하는지에 대한 설명은 API 제공자가 문서화해 제공할 수 있다.

  1. 클라이언트가 서버에 요청을 전송. 클라이언트가 API 문서에 따라 서버가 이해하는 방식으로 요청 형식을 지정한다.
  2. 서버가 클라이언트를 인증하고 해당 요청을 수행할 수 있는 권한이 클라이언트에 있는지 확인한다.
  3. 서버가 요청을 수신하고 내부적으로 처리한다
  4. 서버가 클라이언트에 응답을 반환한다. 응답에는 클라이언트가 요청한 모든 정보도 포함된다.

REST API 요청 및 응답 세부 정보는 API 개발자가 API를 설계하는 방식에 따라 약간 다를 수 있다.

Restful API 사용 이유

쉬운 사용

RESTful API에서 데이터는 요청(request)과 응답(response)의 형태로 전송되며, 이는 HTTP 프로토콜을 기반으로 합니다.

REST API를 사용하는 가장 큰 장점 중 하나는 요청과 응답의 형태로 전송되고 수신되는 데이터를 읽는 것만으로도 어떤 의미인지 알기 쉽다는 것이다. RESTful API는 자체적인 규약을 따르기 때문에 일관된 구조와 의미를 가지기 때문에 API의 기능과 용도를 쉽게 이해할 수 있습니다. 또 REST API는 기존의 HTTP 인프라를 그대로 사용하기 때문에 별도의 인프라 구축이 필요하지 않다.

확장성

RESTful API를 구현하는 시스템은 클라이언트-서버 상호 작용을 최적화하여 효율적으로 확장할 수 있다. REST 아키텍처의 무상태(Stateless) 특성은 서버가 과거 클라이언트 요청 정보를 유지할 필요가 없어 서버 로드를 줄여준다. 이러한 기능들은 성능 저하 없이 시스템의 확장성을 높여준다.

유연성

RESTful 웹 서비스는 완전한 클라이언트-서버 분리를 지원하는데 각각의 부분이 독립적으로 발전할 수 있도록 도와준다. 이는 서버 구성 요소를 단순화하고 분리하여 애플리케이션의 유연성을 높인다.

유연성을 높인다는 것은 RESTful API가 시스템의 구성 요소 간에 독립성을 제공하여 각각의 부분이 독립적으로 발전하고 변경될 수 있는 능력을 갖추는 것을 의미한다. 유연성은 애플리케이션의 개발 및 유지 보수를 용이하게 만들어준다. 각 구성 요소들은 독립적으로 수정될 수 있다.

독립성

RESTful API는 API를 사용하는 클라이언트 애플리케이션 및 서버 애플리케이션을 다양한 프로그래밍 언어로 작성할 수 있고 이는 개발자가 자신이 선호하는 언어를 사용하여 애플리케이션을 개발하고 유지할 수 있도록한다는 점에서 언어적인 독립성을 가지고 있다.
또 클라이언트와 서버 간의 상호작용이 HTTP 프로토콜을 기반으로 이뤄지기 때문에 다양한 운영체제 및 플랫폼에서 동작할 수 있기 때문에 독립성을 가진다.
기술적인 면에서 API의 디자인 및 구현은 어떠한 특정 기술에 의존하지 않고 웹 표준인 HTTP와 REST 원칙을 준수하는데 이것은 API를 사용하는 시스템에서 기술 변경이 발생하더라도 API에 영향을 주지 않고 기존 인터페이스를 독립적으로 유지할 수 있도록 해준다.
이런 독립적인 API는 개발자에게 유연한 선택권을 제공하며, 시스템의 변화에 더 잘 대응할 수 있도록 한다.

profile
Studying for Frontend

0개의 댓글