API 또는 애플리케이션 프로그래밍 인터페이스는 서로 다른 소프트웨어 애플리케이션 간에 통신을 허용하는 프로토콜 및 도구 세트다.
예로 API를 레스토랑의 메뉴로 생각해보자. 메뉴는 주문할 수 있는 요리 목록과 각 요리의 설명을 제공한다. 원하는 메뉴 항목을 지정하면 레스토랑의 주방이 작업을 수행하고 완성된 요리를 제공한다. 우리는 레스토랑이 어떻게 음식을 준비하는지 정확히 알지 못하며, 실제로 알 필요가 없다.
마찬가지로 API는 개발자가 사용할 수 있는 다양한 작업을 나열하며 그들이 수행하는 작업의 설명도 함께 제공한다. 예를 들어, 운영 체제가 파일 시스템에서 파일을 구축하고 관리하는 방법을 개발자가 알 필요는 없다. 파일을 생성할 수 있는 API 호출이 있으며, 파일을 읽는 또 다른 호출이 있다는 것만 알면 된다.
- 추상화: API는 종종 개발자로부터 복잡성을 숨겨 특정 기능 또는 데이터에 쉽게 접근할 수 있게 해줌
- 상호 운용성: API는 다른 언어로 작성된 다양한 소프트웨어 시스템 간의 통신을 허용함
- 웹 API: 인터넷을 통한 통신을 허용(예: REST, SOAP).
- 운영 체제 API: 애플리케이션에서 운영 체제의 기능을 사용하도록 허용함
- 데이터베이스 API: 애플리케이션과 데이터베이스 간의 통신을 허용함
- 하드웨어 API: 프린터나 카메라와 같은 하드웨어와 상호 작용하는 애플리케이션을 허용함
- 메서드/엔드포인트: 웹 API의 맥락에서 API의 특정 기능은 메서드 또는 엔드포인트라고 불림. 예를 들어, 서점용 API에는 책 목록을 검색, 새 책 추가 또는 책 삭제 등의 엔드포인트가 있을 수 있다.
- 데이터 형식: API는 특정 데이터 형식을 사용하여 종종 통신하며, JSON 및 XML은 가장 인기 있는 것 중 일부
- 인증: 많은 API는 API 키나 OAuth와 같은 인증 방법을 요구하여 호출자가 API를 사용할 수 있는 권한이 있는지 확인함
본질적으로, API는 표준화된 방식으로 시스템의 통합 및 데이터 공유를 활성화하여 개발자가 플랫폼 및 애플리케이션 간의 기능을 확장하기 쉽게 만듬
REST API는 REST 아키텍처의 원칙을 따르는 API 유형이다. 일반적으로 HTTP 요청을 사용하여 데이터에 접근하고 사용한다. REST를 사용하면, GET, POST, PUT 및 DELETE와 같은 표준 HTTP 방법을 사용할 수 있다. RESTful API는 표준 URL을 사용하며, 일반적으로 결과는 JSON 또는 XML 형식으로 반환됨 서비스를 사용하여 무언가를 검색할 때 그 구현의 예는 서비스에서 반환하는 결과 목록에서 볼 수 있다.
REST API는 다양한 HTTP 요청 방법을 제공함으로써 서버와의 통신 과정을 우리에게 더 쉽게 해준다. 가장 일반적으로 사용되는 방법은:
GET: get 방법은 서버의 데이터를 읽기 위해 사용
POST: post 방법은 데이터를 생성하기 위해 사용
PATCH/PUT: patch 방법은 데이터를 업데이트하기 위해 사용
DELETE: delete 방법은 데이터를 삭제하기 위해 사용
REST에서 제공하는 이러한 방법들은 CRUD 작업을 쉽게 수행할 수 있게 해줌
즉:
생성 => POST.
읽기 => GET.
업데이트 => PATCH/PUT.
삭제 => DELETE.
따라서 서버에 요청을 하기 위해, 예를 들어 데이터를 검색한다고 하면, 우리는 서버에서 제공하는 엔드포인트/리소스에 GET 요청, 엔드포인트는 URL과 유사
요청이 유효한 경우, 서버는 우리가 요청한 데이터로 응답. 또한 200은 성공이고 400은 클라이언트 오류인 상태 코드도 보냄