API(Application Programming Interface)
정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 매커니즘
쉽게 말해, 컴퓨터나 컴퓨터 프로그램 사이의 연결. 일종의 소프트웨어 인터페이스이며 다른 종류의 소프트웨어에 서비스를 제공한다.
Application Programming Interface의 약칭이며, 애플리케이션(Application)은 특정 기능을 가진 모든 소프트웨어를 말한다. 인터페이스(Interface)는 두 애플리케이션 간의 약속이다. 요청과 응답을 하며 두 애플리케이션이 서로 통신하는 약속.
API 아키텍쳐는 일반적으로 클라이언트(Client)와 서버(Server) 측면에서 실행된다. 요청(Request)을 보내는 애플리케이션을 클라이언트, 응답(Response)을 보내는 애플리케이션을 서버라고 한다.
예를 들어 온라인 쇼핑몰에서 데이터베이스(DB)는 서버, 사용자가 직접 마주하는 브라우저의 요소들은 클라이언트라고 볼 수 있다.
범용성 좋고 모두가 신뢰하는 API를 만들기 위해서는 이러한 과정을 거친다.
여러 사례를 미리 생각하고 API가 현재 API 개발 표준을 준수하는지도 확인하며 보통은 API 명세서를 작성한다.
개발자는 설계를 토대로 API 프로토타입을 상용 코드를 사용하여 생성한다.
버그 및 결함을 방지하기 위해 테스트를 수행한다. API 테스트 도구로 웹 공격에 대비하여 API를 보완할 수도 있다.
API 테스트는 테스트 코드 작성 통하여 가능하며 API 테스트 도구를 사용해서도 가능하다.
API 테스트 도구 예시
- Post Man
- ARC(Advanced REST Client)
- Swagger
- Git Book
...
좋은 API라면 그 자체로도 설명 필요 없이 충분하겠지만 사용 편의성을 높이기 위해 가이드 역할로써 사용된다. 다양한 기능과 사례를 문서화로 작성이 잘 된 API는 서비스지향 아키텍쳐에서 많이 사용된다.
대표적으로 AWS 같은 API 마켓플레이스 처럼 개발자들이 API를 사고 팔 수도 있다. 범용성과 신뢰도가 높은 API는 수익 창출을 일으킬 수도 있다.