기상청은 인터넷에서 날씨 정보를 제공하고 있습니다. 날씨라는 자원을 제공하는 주제를 보통 서버라고 합니다. 반면에 자원을 요청하는 사람, 혹은 프로그램은 클라이언트라고 합니다. 클라잉언트는 웹 브라우저가 될 수도 있고, 우리가 만들고자 하는 날씨 앱도 클라잉너트가 될 수 있습니다.
서버는 클라이언트의 요청을 받아서 다시 클라이언트에 자원을 돌려주는 역할을 합니다.
그런데, 서버가 AI 스피커와 같이 고도화된 인공지능이라서 무슨 말을 해도 다 알아듣는다면 걱정이 없겠지만, 일반적인 컴퓨터처럼 "컴퓨터가 알아들을 수 있는 방법"으로 요청을 보내려면 어떻게 해야 할까요? 설사 서버가 인공지능이라 하더라도, 결국엔 서버가 지원하는 요청이 있고 못 알아듣는 요청이 있을텐데, 이를 어떻게 알 수 있을까요? 이에 대한 정답이 바로 API(Application Programming Interface)입니다. 서버는 클라이언트에게 리소스를 잘 활용할 수 있도록 인터페이스를 제공해줘야 합니다. 이것을 API라고 합니다.
Fetch는 네트워크 요청/응답에 관련된 일반적인 Request/Response Object를 제공한다. 이 말은 범용성이 좋다는 말이다. 캐시, 웹 서비스 핸들링 등 Response를 프로그래밍 언어로 조작하는 모든 것을 허용한다는 뜻이다. 또한 CORS, HTTP Origin header semantics와 같은 개념들도 정의해놨고 이것들을 따로 수정할 수도 있다.
fetch('http://서버주소/weather?q=Seoul')
.then(function(resp) {
// 응답 형식에 따라 resp.text() 가 될 수도 있다
return resp.json();
})
.then(function(json) {
console.log(json); // { tempature: 27 }
});