본문 바로가기
Computer Science/Web & Network

API 단계별로 완벽하게 이해해기

by softserve 2024. 5. 29.
반응형

1 개념

 

새로운 프로그램을 만드는 행위는 서로 다른 기능을 가진 프로그램 블록들을 적절하게 배치하고 결합하는 테트리스와 유사합니다.

차이가 있다면 테트리스의 블록은 모두 같은 게임 회사에서 만든 것이기 때문에 블록의 모양을 보고 잘 쌓기만 하면 되지만,

개발을 위해 사용하려는 블록들은 육안으로 식별이 불가능하고 제각각 다른 제조사에서 만들어낸 것이기 때문에

돋보기를 들고 코드를 하나하나 뜯어보기 전에는 이게 어떻게 생긴 블럭인지, 어떻게 사용해야 하는 것인지 알 수가 없다는 점입니다.

그래서 각 제조사에서는 아래와 같이 우리 블록을 사용하려면 이렇게 하세요 라는 내용을 담은 설명서를 제공하고 있습니다.

www.A.com/shape 라는 주소로

GET 요청을 보내면

이 블록이 어떻게 생겼는지 알려드릴게요!

 

이렇게 요청과 응답을 통해 프로그램과 프로그램 사이의 통신이 효율적으로 이루어질 수 있도록 매개체 역할을 하는 인터페이스를 API라고 합니다.

그러니까 API를 개발한다고 하는 것은 다른 프로그램에서 우리 프로그램에 어떤 요청을 보냈을 때 어떤 응답을 보내줄 것인지 고민하고 정의하고 문서화하는 것을 말합니다. 

 

2 정의

 

API (Application Programming Interface)란

AWS에서는 API를 두 소프트웨어 컴포넌트가 정의나 프로토콜을 이용해 서로 소통하기 위한 메커니즘이라고 정의하고 있습니다.

APIs are mechanisms that enable two software components to communicate with each other using a set of definitions and protocols.

Application이란 구별되는 기능을 가진 모든 소프트웨어를 말하며

Interface는 두 Application 간에 이루어지는 일종의 서비스 계약입니다.

이 계약은 이 두 소프트웨어가 요청과 응답을 통해서 어떻게 통신할 것인지를 정의하고 있습니다.

그리고 그 내용은 API 문서라는 형태로 개발자들에게 제공됩니다.

 

3 라이브러리와의 비교

 

API와 혼동하기 쉬운 개념으로 라이브러리라는 것이 있습니다.

API가 프로그램 간 소통을 위한 인터페이스라면

라이브러리는 누군가 만들어 놓은 코드 집합, 즉 프로그램 그 자체를 의미한다고 할 수 있습니다.

API를 통해서 사용하게 되는 프로그램 역시 라이브러리라고 할 수 있습니다.

라이브러리를 사용하기 위해 정의된 인터페이스 역시 API라고 할 수 있습니다.

예를 들어 자바에서는 기본적인 기능을 구현한 표준 라이브러리를 제공하고 있습니다.

자바 개발자가 화면에 문자를 출력할 때는

메모리로부터 데이터를 가지고 와서 타입에 맞게 변환한 뒤 적절히 서식을 맞춰준 다음 다시 화면에 출력하기까지의 모든 과정을 구현하는 대신,

남이 만들어 놓은 System.out.println() 이란 메서드를 가져다 쓰기만 하면 됩니다. 심지어 System 같이 java.lang 패키지에 속한 클래스들의 경우 명시적으로 import를 할 필요도 없습니다.

라이브러리를 제대로 사용하려면 Javadoc과 같은 형태의 문서를 참고해서 어떤 메서드에 어떤 파라미터를 넣으면 어떤 형태로 결과를 만들어주는지 알아야 합니다.

따라서 단순히 자바 라이브러리를 사용할 때도 우리는 API를 통해서 소통을 하고 있는 겁니다.

Oracle의 Java 공식 문서에서도 "이것은 Java를 위한 API specification 문서다" 라고 소개하고 있는 것을 확인하실 수 있습니다.

 

 

4 REST API란

 

API는 모든 형태의 소프트웨어에 적용될 수 있는 개념이지만 최근에는 HTTP 통신을 주고 받는 웹 프로그램을 개발할 때 많이 사용되고 있죠. 이때의 API를 웹 API라고 부르기도 합니다.

웹 API 중에서도 REST 설계 원칙에 맞게 만들어진 API를 REST API(또는 RESTful API)라고 합니다.

REST가 무엇인지, 어떤 식으로 설계를 해야하는지에 대해서는 다음 기회에 다뤄보도록 하겠습니다.

반응형

댓글