해당 포스팅의 일부 개념 및 자료는 ASAC 웹 풀스택 교육과정에서 참고하였습니다.
이 문서를 토대로 API에 정리하였습니다.

API를 이해하려면 인터페이스를 이해해야 한다.
인터페이스는 사용자와 시스템 사이의 중간 지점으로, 사용자는 내부 구현을 몰라도 인터페이스를 통해 원하는 기능을 사용할 수 있다.
예를 들어, 사용자가 분식집에 가서 "라면 주세요"라고 요청할 때, 어떻게 끓이는지 구체적인 과정을 몰라도 라면을 받을 수 있다. 이처럼 인터페이스는 사용과 구현을 분리하여 사용자가 내부 원리나 세부 구현을 신경 쓰지 않고도 필요한 기능을 활용할 수 있게 한다.
실제로 인터페이스 뒤에서 작동하는 구현체로, 요청을 처리하고 응답을 반환하는 역할을 한다. 이 구체적인 구현은 보이지 않기 때문에 언제든 다른 것으로 교체될 수 있다.
API는 애플리케이션과 서비스 사이의 연결 통로로서, 애플리케이션 간에 데이터를 주고받거나 명령을 실행할 수 있게 한다.
예를 들어, 날씨 앱이 기상청의 날씨 데이터베이스에 접근하여 일일 날씨 정보를 가져오는 것은 API를 통해 이루어진다.
API는 Application Programming Interface의 약자로, 여기서 Application은 특정 기능을 가진 소프트웨어를 의미하며, Interface는 두 애플리케이션이 요청과 응답을 주고받기 위한 약속(계약)을 의미한다.
API는 계약과 같아서, 어떤 요청이 들어오면 어떤 응답을 반환할지 미리 정해져 있다. 예를 들어, 사용자가 날씨 API에 "오늘의 날씨 알려줘"라는 요청을 보내면, API는 그에 맞는 데이터를 반환한다. API 사용자는 내부 로직을 알 필요 없이 정해진 요청과 응답 규칙만 알면 된다.

API는 클라이언트와 서버로 구성된다.
클라이언트는 데이터를 요청하는 애플리케이션이며, 서버는 요청을 처리하고 데이터를 제공하는 쪽이다.
날씨 API의 경우, 모바일 앱이 클라이언트고 기상청의 데이터베이스가 서버다. 클라이언트는 요청을 보내고, 서버는 요청을 분석해 데이터를 가공한 후 클라이언트에 응답한다.
요청과 응답의 구조는 HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하며, 클라이언트는 원하는 작업을 메서드로 표현해 서버에 보낸다. 이때 요청과 응답의 데이터는 주로 JSON 형식으로 전송되어, 서로 다른 시스템 간에 호환성과 가독성을 높인다.

가장 많이 사용되는 API 방식
HTTP 프로토콜을 기반으로 클라이언트가 서버에 요청을 보내고, 서버가 응답을 반환한다.
REST는 각 요청에 상태를 유지하지 않으며(Stateless), 클라이언트가 필요한 리소스의 경로(URL)를 직접 요청할 수 있게 한다.
예를 들어, GET /weather/today라는 요청을 보내면 오늘의 날씨 정보를 받는다.

XML을 기반으로 데이터를 교환하는 프로토콜
메시지 형식과 보안 등에 대한 엄격한 규칙을 가지고 있다. 주로 금융이나 통신처럼 높은 보안이 필요한 경우에 사용되며, REST보다 복잡하고 무거운 구조를 가진다.

양방향 통신이 필요한 실시간 애플리케이션에 적합한 프로토콜
WebSocket을 통해 서버와 클라이언트는 연결이 맺어진 후 서로 자유롭게 데이터를 주고받을 수 있다. 채팅 애플리케이션이나 주식 시장 가격 변동을 실시간으로 보여주는 애플리케이션에 많이 사용된다.
서버에서 클라이언트로 일방향 스트리밍 데이터를 보내는 방식
클라이언트가 서버와 연결을 맺으면 서버는 주기적으로 데이터를 전송할 수 있으며, 실시간 알림이나 대시보드 업데이트에 유용하다.
현재 나는 SSE를 사용한 알림 기능을 구현중에 있다.
API는 명확한 문서화가 필수적이다.
API 문서는 각 요청이 어떤 메서드와 URL로 구성되며 어떤 데이터를 주고받는지에 대한 정보가 들어가야 한다.
예를 들어, 카카오맵의 Open API에서는 단순히 "지도 보여줘"라는 요청을 보내면, 이에 맞는 지도가 반환된다. API 문서에 따라 각 요청의 규칙을 알면, 개발자는 서버의 내부 구현을 몰라도 기능을 사용할 수 있다.
API 문서는 새로운 개발자나 외부 시스템이 API를 쉽게 활용할 수 있게 해 주며, 오픈 API를 통해 누구나 API를 사용하게끔 할 수도 있다.
예를 들어, 카카오맵, 트위터 등의 오픈 API는 외부 애플리케이션이 이들의 기능을 활용할 수 있도록 허용한다.