둘 이상의 컴퓨터 프로그램이 서로 통신하는 방법이자 컴퓨터 사이에 있는 중계 계층을 의미한다.
예를 들자면, A라는 컴퓨터가 요청을 하고 B라는 컴퓨터가 응답을 한다고 했을 때의 어떻게 통신할 것인지, 어떠한 데이터를 주고 받을 건지 등에 대한 방법(HTTP, HTTPS 프로토콜을 사용할 것인지, GET, POST 등의 방식 등..)이 정의된 중계계층. 보통 WEB API를 기준으로 설명된다.
ex) UI
사용자는 해당 서비스가 어떻게 구현되는지 알 필요없이 필요한 정보만을 받을 수 있다.
OPEN API의 경우 앱 개발 프로세스를 단순화 시키고 시간과 비용을 절약할 수 있다.
제공자의 경우 API를 만들게 되면 내부 프로세스가 수정되었을 때 매번 수정하는 것이 아니라, API가 수정이 안되게끔 만들 수 있다.
또한 내부가 변경이되어도 사용자에게 영향을 주지 않고 변경이 가능하다.
제공자는 데이터를 한곳에 모을 수 있다.
예를 들어 큰돌예스24라는 책을 파는 쇼핑몰을 만들었다고 하면 해당 사이트에 방문하는 방문자, 어떤 특정한 것을 클릭하는 사용자에 대한 이벤트를 집계하고 싶을 때 해당 API를 만들고 해당 이벤트가 발생하면 해당 API를 호출하게 만들면 해당 데이터를 한 곳에 모을 수 있다.
ex) 파파고 :
(1) private : 내부적으로 사용된다. 주로 해시키를 하드코딩해놓고 이를 기반으로 서버와 서버간의 통신한다.
이는 비즈니스 파트너와도 사용될 수 있다. private하게도 해당 파트너와 해시키를 공유해 통신합니다.
(2) public : 모든 사람이 사용할 수 있다.
많은 트래픽을 방지하기 위해 하루 요청수의 제한, 계정당 몇개 등으로 관리한다.
결론 : html 파일에서 open API를 요청하면 예측값을 가져오고, 그걸 기반으로 차트를 만드는 것이다.
제공자의 경우 API를 만들게 되면 내부 프로세스가 수정되었을 때 매번 수정하는 것이 아닌 API가 수정이 안되게끔 만들 수 있다. 또한 내부가 변경이 되어도 사용자에게 영향을 주지 않고 변경이 가능하다.
Node.js는 비동기적 이벤트 주도 방식, 논블로킹 I/O 모델을 사용하는 구글의 V8 엔진을 장착한 자바스크립트 런타임이다.
※ 런타임이란 프로그램이 실행될 때 그 프로그램이 머무는 공간을 의미한다. 브라우저는 자바스크립트 런타임이기도 하다. (브라우저라는 공간 안에서 자바스크립트로 만든 프로그램을 실행할 수 있기 때문)
따라서 서버뿐만 아니라 게임, 알고리즘 등 여러가지를 실행할 수 있다.
URI(또는 경로) 및 특정한 HTTP 요청 메소드(GET, POST 등)인 특정 엔드포인트에 대한 클라이언트 요청에 애플리케이션이 응답하는 방법을 결정하는 것을 말함.
URI
http:127.0.0.1:3000
프로토콜 : http
IP : 127.0.0.1 (루프백 IP)
포트 : 3000
cf) https는 443이 기본 포트이다.