
API는 개발을 하면서 빼놓을 수 없는 개념이다.
일반적으로는 서버에 데이터를 요청하기 위한 로직을 의미하는데, 최근 공식문서를 찾아보다가 다른 맥락에서 이 용어가 사용되는 것을 보게됬다. API를 데이터를 요청할때의 상호작용을 설명하는 용어로만 이해하기에는, 여러 상황에서 범용적으로 쓰인다는 느낌을 받았고, 이를 좀더 심도있게 이해하고 싶어졌다.
API(application programming interface)
소프트웨어 프로그램간에 상호작용을 위한 인터페이스이다.
Interface
- 상호작용 & 중간다리
- 서로다른 무언가를 연결하는 시스템

위에서도 언급했던것처럼 API는 대체로 서버에 데이터를 요청하는데 사용된다. 클라이언트(UI)에 뿌려줄 데이터를 호출하기 위한 코드이다.
JavaScript에서 자주 사용되는 인터페이스는 RESTful API와 GraphQL API 가 있다. Swift에서는 URLsession과 Alamofire, Moya 등의 라이브러리를 사용하는 것과 같다.
1번에 대한 이해만 가지고 있던 내가, API에 대해서 퀘스천마크를 가지게 되었던건 Swift 공식문서에서 사용된 아래 문장때문이였다. API를 명확하고 간결하게 설계하기를 권고하는 내용인데, 여기서 사용되는 API는 데이터를 요청할 때의 의미와는 괴리가 있어보였다.
Introduction
Delivering a clear, consistent developer experience when writing Swift code is largely defined by the names and idioms that appear in APIs. These design guidelines explain how to make sure that your code feels like a part of the larger Swift ecosystem.
Fundamentals
Design APIs to make those uses clear and concise.
If you are having trouble describing your API’s functionality in simple terms, you may have designed the wrong API.
위 문맥에서 이야기하는 API는 조금 더 넓은 의미를 가진다. API가 구성요소를 이어주는 중간다리라는 점은 변하지 않지만 위에서 이야기했던 구성요소가 서버와 클라이언트였다면, 여기서는 Swift가 제공하는 함수 메서드 클래스 등을 의미한다는 점이 다르다.
따라서 이 구성요소들을 연결해서 코드를 작성할때 이를 어떻게 설계해 나갈것인지를 권고하는 내용이다. 따라서, 소프트웨어 요소간의 상호작용 이야기할때도 우리는 API라는 용어를 사용 할 수 있다.
JavaScript의 라이브러리인 React에서는 라이프 사이클을 활용는 Hook 이라는 개념이 있는데, 이 또한 공식문서에서 API로 표현되고 있다.
React에 내장된 Hook API
프로그래밍 언어에서의 흐름과 마찬가지로 이 경우에는 라이브러리가 제공하는 기능을 API라고 이해할 수 있다. 즉 개발자에게 해당 라이브러리가 제공하는 기능을 활용하는 방법을 제시하는 내용으로 이해할 수 있었다.
API는 구성요소간의 무언가를 이어주는 인터페이스이다. 데이터 요청에만 국한되지 않고 여러수준에서 인터페이스를 가르킬 수 있다. 따라서 다양한 소프트웨어 요소 간의 상호작용과, 프로그래밍 언어나 라이브러리에서 제공하는 기능을 칭할때에도 사용된다.
서버와 클라이언트의 관계는 실제로 우리가 흔히 부르는 서버와 클라외에도 정말 많은 곳에서 보여지죠ㅎㅎ
서버도 다른 서버의 API를 쓰게 되는 순간 클라이언트의 입장이 되는 것 처럼요. 말씀해주신대로 라이브러리에서 제공해주는 API를 사용할 때에는 라이브러리가 서버고 해당 코드를 가져다쓰는 개발자들이 클라이언트가 되겠네요
좋은 글 잘보고 갑니다!