Computer Science

API란

API란 무엇일까? 우아한 테크코스에서 미션을 진행하면서 API가 무엇일까에 대한 질문을 받았는데, 완전히 답변할 수 없다는 것을 깨달았다. 나는 API가 정확히 무엇인지도 모르고, API를 구현하고 있었던 것이다..

 

우선 API란 Application Programming Interface의 약자로서 서로 다른 두 물체간의 접점, 상호작용을 의미한다. 즉, 응용 프로그램에서 사용할 수 있도록 기타 다른 응용 프로그램을 제어할 수 있도록 하는 것을 말한다.

 

우리는 API를 왜 사용하는가? API를 사용하면 우리가 제어하고자 하는 시스템의 환경을 정확히 알지 못하더라도 손쉽게 제어할 수 있다. 예를 들어, javascript에서의 alert기능은 alert를 통해 브라우저에 경고창을 발생할 수 있는데, 이 역시 API이이다. 우리는 alert의 내부 구조가 어떻게 구현되어있는지 알지 못한 채로 간단하게 alert를 호출함으로서 경고창을 띄울 수 있다. 즉, API는 내부 기능을 숨긴 채 손쉽게 제어할 수 있도록 해 준다.

 

그렇다면 REST API란 무엇일까? 

 

자원의 표현으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미한다. 즉, 자원의 표현에 의한 상태 전달을 의미한다. 여기서 REST는 네트워크 상에서 Client와 Server 사이의 통신 방법 죽 하나인데, HTTP URI를 통해 자원을 명시하고, Http Method를 이용해 해당 자원에 대한 CRUD를 적용하는 것을 의미한다.

 

그렇다면, 우선 API는 Interface로서 상호작용하며 프로그램을 제어할 수 있도록 하는 인터페이스를 말하고, 자바의 인터페이스또한 API에 해당한다. REST API는 상호작용을 자원의 표현을 통해 상태를 전달하면서 상호작용하고, 그에 REST 를 적용하여 자원에 대해 CRUD를 실행하는 것. (맞나?)

 

그리고, response / request에 맞추어 메서드를 설계하는 것 또한 메서드 내부는 알지 못한 채 해당 uri로 요청을 보내면 응답이 올 것을 이용해 제어할 수 있기 때문에 이 또한 API가 되고.. 무언가 정리되는 듯 하면서 헷갈리기도 한다.

 

- https://meetup.toast.com/posts/92

- https://www.youtube.com/watch?v=RP_f5dMoHFc