API + REST → RESTful 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

"모든 RESTful API는 API이지만, 모든 API가 RESTful API인 것은 아닙니다."
댓글
GitHub 계정으로 의견이나 질문을 남길 수 있습니다.