WEB | API가 뭔데!?

바다·2024년 5월 3일
0

WEB

목록 보기
1/10
post-thumbnail

API (Application Programming Interface)

API는 애플리케이션 소프트웨어를 빌드하고 통합하기 위한 정의 및 프로토콜 세트인 애플리케이션 프로그래밍 인터페이스(Application Programming Interface)를 뜻한다!

API는 두 소프트웨어 구성요소가 서로 통신할 수 있게 해주는 메커니즘이다

애플리케이션이라는 단어는 고유한 기능을 가진 모든 소프트웨어를 나타내고,
인터페이스는 두 애플리케이션 간의 서비스 계약이라고 할 수 있다
계약은 요청과 응답을 사용하여 두 애플리케이션이 서로 통신하는 방법을 정의한다

"한 쪽 당사자가 특정한 방식으로 구성된 원격 요청을 보내면 다른 쪽 당사자의 소프트웨어가 이에 응답하는 방식"

  • API를 사용하면 구현 방식을 알지 못하는 제품 또는 서비스와도 통신 가능
  • 애플리케이션 개발을 간소화하여 시간과 비용을 아낄 수 있음
  • 새로운 툴과 제품을 설계하거나 기존 툴과 제품을 관리할 때 유연성을 높이고 설계, 관리, 사용 방법을 간소화

API 호출

API 호출은 API 요청이라고도 하며, API 사용을 트리거하는 API에 보내는 메시지이다

기상청에 있는 날씨 정보를 가져오는 API를 사용하여 웹 사이트를 만든다고 가정해보자.
내가 개발할 웹 사이트에서는 날씨 정보를 제공해주기 위해 API 호출을 기상청에 전송한다(예- 인천 서구). 기상청의 API 서버에서는 이 메시지를 수신하고 웹 사이트에서 요청한 "인천 서구"의 날씨와 관련된 정보를 회신해 준다.

API 요청API 응답
"인천 서구"인천 서구의 날씨 정보
"서울 마포구"서울 마포구의 날씨 정보

(이건 매우매우 단순화된 예시이다! 실제 API 요청, 응답, 스키마는 더 복잡하다)

API 엔드포인트

API 엔드포인트는 API 응답이 시작되는 곳이다!

위의 예시에서 API 연결의 클라이언트(요청자)는 나의 웹 사이트이고 엔드포인트는 API를 제공해주는 서버이다.
나의 API 호출은 API 서버가 담당하는 특정 URL로 이동해야만 응답을 받을 수 있다

API 통합

API 통합은 API를 사용해서 두 개 이상의 애플리케이션을 결합하는 것이다

한 애플리케이션이 다른 애플리케이션의 기능을 활용할 수 있도록 하며, 일반적으로 두 애플리케이션 또는 데이터베이스 간에 데이터를 동기화하는 데에도 사용된다

WEB API

운영 체제부터, 소프트웨어 라이브러리까지 컴퓨터 코드와 관련된 모든 것에는 API가 있을 수 있다
웹 API는 API 중에서도 특히 인터넷을 통해 엑세스하는 웹 애플리케이션에서 사용하기 위한 것이다 (모든 웹 서비스는 API이지만 모든 API가 웹 서비스는 아니다)

  • 웹 API는 일반적으로 요청 메시지에 HTTP를 사용하여 응답 메시지 구조의 정의를 제공
  • 응답 메시지는 일반적으로 XML 또는 JSON 파일 형태
  • 다른 애플리케이션이 쉽게 조작할 수 있는 방식으로 데이터를 표시하므로 XML과 JSON 둘 다 자주 사용 (최근에는 JSON이 더 많이 사용됨)

API 종류

프라이빗

API를 내부에서만 사용할 수 있도록 하며, 기업이 API를 최대한으로 제어할 수 있다

퍼블릭

API가 모두에게 제공되며, 제 3자가 API와 상호 작용하는 애플리케이션을 개발할 수 있다

파트너

API를 특정 비즈니스 파트너와 공유하고, 품질 저하 없이 추가 수익원을 창출할 수 있다


API 작동 방식

API가 생성된 시기와 이유에 따라 API는 네 가지 방식으로 작동할 수 있다

SOAP API

  • 단순한 객체 접근 프로토콜을 사용
  • 클라이언트와 서버는 XML을 사용하여 메시지를 교환
  • 과거에 많이 사용
  • 유연성이 떨어짐

RPC API

  • 원격 프로시저 호출이라고 함
  • 클라이언트가 서버에서 함수나 프로시저를 완료하면 서버가 출력을 클라이언트로 다시 전송

Websocket API

  • JSON 객체를 사용하여 데이터를 전달하는 또 다른 최신 웹 API
  • 클라이언트 앱과 서버 간의 양방향 통신을 지원
  • 서버가 연결된 클라이언트에 콜배 메시지를 전송할 수 있음 (REST API보다 효율적)

REST API

  • 현재 웹에서 가장 많이 사용되고 있는 유연한 API
  • 클라이언트가 서버에 요청을 데이터로 전송
  • 서버가 클라이언트 입력을 사용하여 내부 함수를 시작하고 출력 데이터를 다시 클라이언트에게 반환

그리고 GraphQL

  • API용으로 특별히 개발된 쿼리 언어
  • 클라이언트에게 요청한 데이터만 제공하는 것을 우선으로 함
  • API를 빠르고 유연하며 개발자 친화적으로 만들도록 설계
  • REST의 대안
  • GraphQL은 프론트엔드 개발자에게 단일 GraphQL 엔드포인트로 여러 데이터베이스, 마이크로서비스 및 API를 쿼리할 수 있는 기능을 제공

현재 Java/Spring 백엔드 개발자는..!?

거의 REST API를 사용한다고 보면 된다!
다음 글에서는 REST API에 대해서 더 자세히 알아보면 될 것 같다 :)

profile
ᴘʜɪʟɪᴘᴘɪᴀɴs 3:14

0개의 댓글