티스토리 뷰

반응형

📘 API란 무엇인가?


✅ 1. API의 약자와 정의

🔤 API = Application Programming Interface

단어 의미

Application 응용 프로그램 (앱, 소프트웨어 등)
Programming 프로그래머가 기능을 사용할 수 있게
Interface 접점, 연결 통로 (시스템 간 소통 수단)

✅ 정의:

API는 응용 프로그램이 다른 프로그램, 라이브러리, 운영체제, 서버 등에 요청을 보내고 기능을 사용할 수 있도록 만든 공식적인 인터페이스입니다.

즉,
**“기능을 제공받기 위해 정해진 규칙에 따라 요청하고, 그 결과를 받는 구조”**입니다.
형태는 함수처럼 보일 수 있지만, 경계를 넘는 ‘계약된 통신’이라는 점에서 다릅니다.


🧭 2. 왜 API가 필요한가?

이유 설명

✅ 기능 재사용 운영체제나 라이브러리의 기능을 다시 만들 필요 없이 바로 호출
✅ 경계 넘기 다른 시스템(운영체제, 서버, 외부 앱 등)과 안전하게 소통하기 위해
✅ 내부 구조 은닉 구현은 숨기고, 사용법만 문서화해서 제공
✅ 개발 효율성 만든 사람과 쓰는 사람이 달라도 정확히 연결 가능

🧪 3. 실전 예시

🔹 운영체제 API (Windows)

MessageBox(NULL, "Hello", "Title", MB_OK);

→ Windows에서 제공하는 API
→ 메시지 박스를 띄워주는 기능을 OS에 요청하는 구조
→ 내부적으로 커널 호출까지 이어짐


🔹 웹 API (REST)

GET https://api.weather.com/v1/current?city=seoul

→ 서버에게 날씨 정보를 요청하는 HTTP 기반 API
→ 요청 형식, 응답 구조(JSON), 인증 방식 등은 API 문서에 명세되어 있음


🔹 라이브러리 API (Python)

import math
math.sqrt(25)

→ sqrt() 함수는 math 라이브러리의 API
→ 내부 구현은 숨겨져 있고, 우리는 문서화된 호출 방식만 따라 쓰면 됨


🔍 4. 헷갈리기 쉬운 개념과 API의 차이점


🔸 1) 함수 vs API

구분 함수 API

위치 같은 코드/모듈 내부 외부 시스템/라이브러리/OS
목적 코드 재사용, 구조화 시스템 간 기능 요청 및 통신
문서화 보통 없음 반드시 존재 (입력, 출력, 에러 정의 등)
호출 구조 내부 호출 경계 넘는 호출

예시 비교

✅ 함수 예시:

int add(int a, int b) {
  return a + b;
}

✅ API 예시:

MessageBox(NULL, "API 호출", "Windows", MB_OK);
  • add()는 내가 만든 함수 → 컴파일러만 알면 됨
  • MessageBox()는 Windows가 만든 기능 → 명세에 따라 호출해야 OS가 응답

🔸 2) 라이브러리 vs API

구분 라이브러리 API

정체 기능이 구현된 코드 묶음 그 기능에 접근하는 공식 사용법
구성 .lib, .dll, .so, .py, .jar 등 함수 시그니처, URL, 명세 등
사용 관계 API를 통해 접근됨 라이브러리를 사용하기 위한 문서화된 경로
독립 실행 가능성 가능 (코드가 존재하므로) 불가 (실행하려면 구현이 필요함)

예시 비교

✅ 라이브러리 예시:
math 라이브러리의 내부 구현 (C언어, 어셈블리 등)

✅ API 예시:

math.sqrt(16)  # API 호출
  • API는 우리가 쓰는 입구 함수
  • 라이브러리는 그 입구 너머에 있는 실제 기능 덩어리

🔸 3) 시스템 콜 vs API

구분 시스템 콜 API

목적 커널에 직접 요청 시스템 기능을 개발자가 쉽게 쓸 수 있게 감싼 것
호출 대상 운영체제 커널 OS, 서버, 라이브러리 등
호출 방식 인터럽트 기반 (ex: int 0x80) 함수 호출, HTTP 요청 등
직접 사용 여부 보통 안 씀 개발자가 직접 사용

예시 비교

✅ 시스템 콜 예시 (Linux):

int fd = syscall(SYS_open, "file.txt", O_RDONLY);

✅ API 예시 (C 표준 라이브러리):

FILE* fp = fopen("file.txt", "r");
  • fopen()은 API로, 내부적으로 open() 시스템 콜 호출
  • API는 시스템 콜을 감싸는 고수준 접근 도구

📌 5. 최종 정리

항목 API

약자 Application Programming Interface
정의 외부 시스템/기능에 요청을 보내고 결과를 받기 위한 명세된 인터페이스
구조 이름, 입력값, 출력값, 오류 형식, 버전 등 문서화된 규약
특징 시스템 경계를 넘음, 문서화 필수, 호출 규칙 명확
쓰임 OS, 서버, 라이브러리, 하드웨어, 모바일 등 거의 모든 환경

✅ 한 줄 요약

API는 단순히 함수를 감싼 것이 아니라,
다른 시스템의 기능을 안전하고 정확하게 사용할 수 있도록 만든
‘문서화된 통신 규약’이자 ‘공식 호출 경로’입니다.

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함
반응형