API

Application Programming Interface

정의

  • API 는 Application Programming Interface 의 약자로, 두 개 이상의 컴퓨터 프로그램 사이에 있는 중간계층을 의미하며, 이를 통해 프로그램들 간 통신을 하게 된다.

  • 컴퓨터가 요청에 대해 어떻게 통신하는지, 어떠한 데이터를 구조로 받을지를 미리 정의해준다.

  • 참고

    • 비슷한 예로, 사용자 인터페이스인 User Interface는 사람과 컴퓨터 사이를 연결하는 중간계층이다.

  • Web API, Web Socket API 등 다양한 API 가 존재하는데, 보통 API 라고 하면, 웹 API를 의미하는 것으로 이해한다.

  • 구조

    • 웹 사이트 -> [요청] -> 인터넷 -> API -> 웹 서버 -> 데이터베이스

    • 위처럼 사용자의 브라우저와 웹 서버 사이에 위치한 API는 그 사이에서 중간계층 역할을 하면서 요청을 처리한다.

장점

  1. 사용자

    1. 귀찮고 복잡한 정보를 알 필요없이 기능만 사용할 수 있다.

    2. 복잡한 시스템이나 기능을 직접 구현하지 않고 가져다가 사용할 수 있다. (OPEN API)

  2. 제공자

    1. 서비스의 민감한 정보를 API 뒤로 감출 수 있다. 데이터베이스 설계 구조나 서버의 상수값 등 드러내고 싶지 않은 정보들을 API 뒤로 숨길 수 있다.

    2. API를 가져다가 사용하는 사용자들의 데이터를 간접적으로 얻을 수 있고, 이를 통해 서비스를 발전시켜나갈 수 있다.

    3. 내부 데이터베이스나 프로세스가 수정되어도 매번 즉각적으로 수정하지 않고, 사용자에게 영향을 주지 않고 변경을 할 수 있다.

    4. 데이터를 한 곳으로 모을 수 있다.

종류

  • private

    • 내부적으로 사용되며, 해시키를 미리 하드코딩해두고 이 키를 검사하며 서버와 서버간 통신을 한다.

    • 비즈니스 파트너와 키를 미리 정의하고 공유하여 파트너 간에도 이용할수도 있다.

  • public

    • 모든 사람이 사용할 수 있지만

    • 많은 트래픽을 방지하기 위해서 하루 요청수를 제한하거나 계정당 몇 건 정도로 제한한다.

    • 예) 카카오로 로그인하기 API

실습 1. OPEN API 이용해서 날씨 예측 사이트 만들기

  • OPEN API로 공개된 날씨 데이터를 이용하여 미리 날씨를 예측하는 사이트를 만들 수 있다.

실습 2. Node.js 로 간단한 API 만들기

  • API를 만들어 내부의 파일이나 데이터베이스 혹은 프로세스가 변경되어도, 이를 가져다 쓰는 사용자에게는 영향이 없도록 할 수 있다.

  • 참고

    • Node.js : 비동기적 이벤트 주도 방식, 논블로킹 I/O 모델을 사용하는 구글의 v8 엔진을 장착한 자바스크립트 런타임이다.

    • 런타임 : 프로그램이 실행될 때, 머무는 공간을 의미한다. 브라우저는 자바스크립트 런타임이기도 하다. 브라우저라는 "공간"에서 자바스크립트로 만든 프로그램을 실행할 수 있기 때문!

    • Node.js 는 자바스크립트 런타임이므로, 자바스크립트로 만든 게임, 알고리즘, 서버 등 다양한 프로그램들을 실행할 수 있다. 그 중 하나가 서버일 뿐이다.

디자이너에게 API를 설명해보자

안녕하세요. 디자이너님! 오늘은 API가 무엇인지에 대해서 간단하게 설명하고자 해요. 보다 원활한 설명을 위해서 우리 회사의 홈페이지를 함께 만드는 프로젝트를 진행한다고 생각해볼께요.

회사 홈페이지에 우리는 누적 가입자수를 실시간으로 계산해서 노출하고 싶어요. 자랑해야죠! 이때 사용자가 바라보는 웹 페이지 화면을 디자이너님이 디자인하실텐데 우리는 그것을 보통 UI 디자인이라고 부르죠.

디자이너님이니까 UI라는 용어에 대해서는 익숙하실 것 같아요. UI는 User Interface 의 약자로 보통 웹/앱 서비스에서는 사용자인 User 가 보는 웹/모바일 화면을 의미합니다. 텍스트 정보나 버튼을 포함해서 사용자와 시스템 간 데이터를 전달하고 전달받을 수 있는 모든 요소를 의미합니다.

이처럼 인터페이스라는 단어는 서로 다른 두 시스템끼리 정보를 교환할 수 있는 공유 경계선을 의미합니다. 저희 프로젝트에서는 사용자가 바라보는 기업 홈페이지 화면이 그것이 되겠지요.

하지만 디자인만 완성되었다고 해서 우리가 기업 홈페이지를 완성한 것은 아니에요. 실시간으로 집계되는 진짜 데이터, 숫자가 노출되어야죠! 그러기 위해서 우리는 데이터베이스에 차곡차곡 저장된 총 회원들의 수를 계산해서 노출해야하겠죠? 이때 이용되는게 바로 API입니다.

API는 Application Programming Interface의 약자로, 역시 인터페이스입니다. 다만 여기서는 사용자인 User와 소통하는 인터페이스가 아니라, 웹 홈페이지와 서버가 소통하기 위한 인터페이스에요.

디자이너님이 디자인을 예쁘게 끝내면, 프론트 개발자 분들이 디자인을 실제 웹 사이트로 구현을 하죠. 그리고는 화면에 표시될 진짜 데이터를 가져오기 위해서 API를 이용해 서버에 요청을 합니다. "지금 전체 가입자 수를 알려주세요!"

그러면 요청을 받은 서버는 데이터베이스에 접근하여 전체 회원의 수를 조회하고 웹 페이지에서 예쁘게 노출할 수 있도록 형식을 다듬어 전달합니다. 이렇게 웹 페이지(클라이언트)와 서버가 소통하는 이 과정을 API라고 합니다.

API는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다.

인터페이스(interface)는 컴퓨터 시스템끼리 정보를 교한하는 공유 경계를 의미한다, 터치 스크린과 같은 일부 컴퓨터 하드웨어 장치들은 인터페이스를 통해 데이터를 송수신 할 수 있으며, 마우스나 마이크론 폰가 같은 장치들은 오직 시스템에 데이터를 전송만 하는 인터페이스를 제공한다.

참고

Last updated