← 목록으로
DEVLOG · education
2026-06-02

API + REST → RESTful API ?

API제네릭

1. API의 정의와 언어 독립성

프로그래밍 언어에서 API의 의미

API(Application Programming Interface)는 애플리케이션 프로그래밍 인터페이스의 약자로, 서로 다른 소프트웨어 구성 요소들이 서로 소통할 수 있도록 연결해 주는 규칙과 규격을 의미합니다.

소프트웨어 개발에서는 내부 코드가 어떻게 구현되었는지 몰라도, API가 제공하는 규칙에 맞게 요청을 보내면 원하는 기능을 시스템으로부터 얻을 수 있습니다.

언어와 상관없이 적용되는 개념인가?

자바, C++, C, 파이썬 등 언어의 종류와 상관없이 소프트웨어 공학 전반에 공통으로 적용되는 패러다임입니다. 각 언어 별로 API가 존재하는 방식이 존재하고 예시로

  • C 언어 Windows 운영체제의 기능을 호출하는 Win32 API, 리눅스 시스템 기능을 호출하는 POSIX API 등이 있습니다.
  • 자바(Java) JDK(Java Development Kit)가 제공하는 다양한 클래스와 메서드(예: 파일 입출력을 위한 java.io 패키지)가 자바 자체의 API입니다.
  • 파이썬(Python) 데이터 분석을 위해 사용하는 Pandas, 기계학습을 위한 TensorFlow 등의 라이브러리가 제공하는 함수들이 모두 API입니다. "특정 기능을 외부에서 호출해서 쓸 수 있도록 규격을 정한 코드"라면 모두 API라 할 수 있습니다.

2. RESTful의 정의와 범위RESTful이란 무엇인가?

REST(Representational State Transfer)는?

웹 아키텍처 스타일(설계 원칙)입니다. 그리고 이 REST 원칙을 잘 지켜서 설계된 시스템이나 API를 'RESTful하다'라고 표현합니다. RESTful의 핵심은 자원(Resource)을 정의하고 자원에 대한 주소를 지정하는 방법론입니다.

  • 자원 (Resource): URI(주소)로 표현 (예: /users, /books)
  • 행위 (Verb): HTTP 메서드로 표현 (예: GET(조회), POST(생성), PUT(수정), DELETE(삭제))
  • 표현 (Representation): 클라이언트와 서버가 데이터를 주고받는 형태 (현재는 주로 JSON 형식 사용)

웹 프로그래밍에 한정된 개념인가?

이론적으로는 네트워크 아키텍처 스타일이지만, 실무적으로는 웹 프로그래밍에 한정된 개념입니다.

REST는 본래 '분산 하이퍼미디어 시스템을 위한 아키텍처'로 제안되었기 때문에 반드시 웹이어야만 하는 것은 아닙니다.

하지만 REST가 기반으로 두고 있는 통신 프로토콜이 정확히 HTTP이기 때문에, 현대 IT 환경에서 RESTful API라고 하면 100% 웹 네트워크를 통해 데이터를 주고받는 API를 의미합니다.

웹 브라우저, 모바일 앱, 서버 간의 통신 등 네트워크가 개입되는 웹 생태계에서만 주로 사용되는 개념으로 이해하면 좋을 것 같습니다.

3. API vs RESTful API

이미지 불러오는 중
image

"모든 RESTful API는 API이지만, 모든 API가 RESTful API인 것은 아닙니다."

4. HTTP 기반의 다른 API와 비교

비교 항목통신 방향성기반 프로토콜데이터 포맷통신 비용 / 오버헤드핵심 차별점
WebSocket양방향 (Full-Duplex)
한 번 연결하면 실시간 양방향 소통
HTTP 악수 후 독자 프로토콜 (ws://)텍스트(JSON) 및 바이너리연결 유지 비용 발생하나, 메시지별 헤더 오버헤드가 극도로 낮음지연 시간이 거의 없는 실시간성
gRPC양방향 스트리밍 지원
단방향/양방향 스트리밍 자유로움
HTTP/2 기반Protocol Buffers
(이진 바이너리)
데이터 압축률이 극도로 높아 네트워크/컴퓨터 파싱 비용 최소화압도적인 고속 전송 및 타입 안정성
HLS / DASH단방향 (Server -> Client)
서버가 미디어를 스트리밍
HTTP / HTTPS 표준 기반미디어 조각
(TS, MP4 파일)
영상 조각 단위 다운로드 방식으로 일반 웹 서버 오버헤드 수준네트워크 상태에 따른 화질 자동 조절
GraphQL요청-응답형 단방향
클라이언트가 요청 시 응답
HTTP / HTTPS 표준 기반JSON (텍스트)필드별 리졸버(Resolver) 작동 및문자열 파싱 오버헤드 발생클라이언트 중심의 원하는 데이터만 골라 받기
DISCUSSION

댓글

GitHub 계정으로 의견이나 질문을 남길 수 있습니다.

댓글 불러오는 중