API는 서로 다른 프로그램(애플리케이션)이 소통하고 상호작용하기 위해 사용되는 규칙과 도구의 모음입니다.
복잡한 내부 구현을 알 필요 없이, API가 제공하는 정해진 '창구'를 통해 요청을 보내고 원하는 결과를 얻을 수 있습니다.
예를 들어, 우리가 사용하는 console.log()나 alert() 역시 JavaScript 언어 자체의 기능이 아니라, 웹 브라우저라는 프로그램이 제공하는 API입니다. 우리는 브라우저의 콘솔이 어떻게 동작하는지 몰라도 console.log라는 API를 통해 메시지를 출력할 수 있습니다.
// Console API - 브라우저의 콘솔에 문자열을 출력하는 API
console.log("안녕하세요!");
// Alert API - 브라우저에 알림 창을 띄우는 API
alert("알림 메시지");
Web API는 웹 기술, 특히 HTTP 프로토콜을 기반으로 외부 프로그램(서버)의 기능이나 데이터를 사용할 수 있게 해주는 API입니다.
Web API의 통신은 항상 요청하는 쪽과 응답하는 쪽으로 나뉩니다.
HTTP(HyperText Transfer Protocol)는 클라이언트와 서버가 웹에서 서로 데이터를 주고받기 위해 사용하는 핵심 통신 규약입니다. HTTP 통신은 항상 요청(Request)과 응답(Response) 한 쌍으로 이루어집니다.
REST(REpresentational State Transfer)는 Web API를 설계하는 데 널리 사용되는 아키텍처 스타일 중 하나입니다. HTTP를 기반으로, 어떻게 하면 리소스를 효율적으로 정의하고 다룰 수 있는지에 대한 원칙을 제공합니다.
REST의 3가지 핵심 요소:
주요 행위 (HTTP Methods)
| 메서드 | 목적 | 설명 |
|---|---|---|
GET | 조회 | 지정된 리소스의 정보를 가져옵니다. |
POST | 생성 | 새로운 리소스를 생성합니다. |
PUT | 전체 수정 | 지정된 리소스의 전체를 새로운 정보로 교체합니다. |
PATCH | 일부 수정 | 지정된 리소스의 일부를 수정합니다. |
DELETE | 삭제 | 지정된 리소스를 삭제합니다. |
URL(Uniform Resource Locator)은 웹에 있는 방대한 리소스의 위치를 유일하게 식별할 수 있는 주소 체계입니다.
예시: https://www.naver.com/search?query=날씨&location=서울
| 구성 요소 | 예시 | 설명 |
|---|---|---|
| 스키마 (Scheme) | https:// | 통신 방식(프로토콜)을 정의합니다. (예: http://, https://) |
| 도메인 (Domain) | www.naver.com | 리소스가 위치한 서버의 고유한 이름입니다. |
| 경로 (Path) | /search | 서버 내에서 리소스의 구체적인 경로를 나타냅니다. (예: /posts/123) |
| 쿼리 (Query) | ?query=날씨&location=서울 | 서버에 추가적인 정보를 전달할 때 사용합니다. ?로 시작하며, 각 파라미터는 &로 구분됩니다. 주로 검색, 필터링, 정렬 등에 사용됩니다. |
실제 Web API를 호출하여 데이터를 받아오는 방법을 알아봅시다.
웹 브라우저 주소창에 아래 URL을 입력하고 엔터를 치면, 서버로부터 응답받은 데이터를 확인할 수 있습니다.
전체 게시글 목록 가져오기 (GET)
https://jsonplaceholder.typicode.com/postsID가 1번인 게시글 하나만 가져오기 (GET)
https://jsonplaceholder.typicode.com/posts/1전체 사용자 목록 가져오기 (GET)
https://jsonplaceholder.typicode.com/usersID가 1번인 사용자의 게시글 목록만 가져오기 (GET)
https://jsonplaceholder.typicode.com/posts?userId=1