티스토리 뷰
반응형
📘 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는 단순히 함수를 감싼 것이 아니라,
다른 시스템의 기능을 안전하고 정확하게 사용할 수 있도록 만든
‘문서화된 통신 규약’이자 ‘공식 호출 경로’입니다.
반응형
'프로그래밍 > 시스템 프로그래밍' 카테고리의 다른 글
CreateThread()와 _beginthreadex() 차이점 (0) | 2025.04.05 |
---|---|
__stdcall 이란? (0) | 2025.04.05 |
프로세스와 스레드 (0) | 2025.03.31 |
파이프 방식의 IPC (0) | 2025.03.27 |
프로세스, 핸들 테이블, 그리고 핸들 상속 (0) | 2025.03.26 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 뇌와행동의기초
- 코딩테스트
- 티스토리챌린지
- c++
- 열혈프로그래밍
- C/C++
- Python
- 류근관
- 회계
- 데이터분석
- 일본어
- 사회심리학
- stl
- 오블완
- 보세사
- 강화학습
- 인프런
- 일본어문법무작정따라하기
- 심리학
- 통계학
- 통계
- 파이썬
- 일문따
- 윤성우
- C
- jlpt
- 백준
- 여인권
- 인지부조화
- K-MOOC
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함
반응형