Nubes et Stella

API(Application Programming Interface) 본문

Knowledge/Dev(Ops)

API(Application Programming Interface)

SeongYeong Han 2023. 8. 22. 19:50

01. API란?

프로그램과 프로그램이 서로 통신하기 위해서는, 사전에 서로 약속된 규칙이 필요하다. 때문에 프로그래밍을 할 때에는 외부 프로그램과의 연동을 생각해서 이러한 규칙을 사전에 정의해야 하는데 이러한 규칙들을 API라고 생각하면 될 것 같다.
요약하자면 API는 소스 코드 수준에서 정의되는 인터페이스라고 할 수 있다.

 

 

예를 들어 내가(Client) 스마트폰으로 카카오에 특정 request를 보내면 해당 request를 인식하여 그에 맞는 response를 카카오에서 보내줘야 한다. 이 때 카카오는 특정 request에 맞는 response를 보내줘야 하는데 이를 위한 규칙API이다.

 

여러 공공기관, 기업에서는 개발자들을 위한 API를 공개하고 있다.

 

https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

https://www.data.go.kr/

 

 

02. RESTful API

RESTful API를 이해하기 위해서는 우선 "REST"에 대해서 알아볼 필요가 있다. RESTful API는 이 REST를 준수하는 API라고 이해하면 될 것 같다. 때문에 이 항목에서는 REST의 개념에 대해서 주로 다루고자 한다.

 

REST(Representational State Transfer)는 로이 필딩(Roy Fielding)이 자신의 2000년 박사 학위 논문에 정의한 네트워크 소프트웨어 아키텍처다. 쉽게 말하면 '네트워크에서 통신을 구성할 때 이런 구조로 설계하라는 지침' 정도로 볼 수 있다.

 

REST의 대표적인 주요 특징은 아래와 같다. (feat, ChatGPT)

 

  • 자원 (Resources) : 모든 자원은 고유한 식별자(URI)를 가지며, 클라이언트는 이를 통해 자원에 접근합니다. 자원은 서버에서 관리되며, 텍스트, 이미지, 데이터베이스 레코드 등 모든 것이 자원이 될 수 있습니다.
  • 표현 (Representations): 자원의 표현은 다양한 형태로 이루어질 수 있습니다. JSON, XML, HTML 등 다양한 포맷으로 자원의 상태를 나타낼 수 있습니다.
  • 메서드 (Methods): HTTP 메서드를 사용하여 자원에 대한 동작을 정의합니다. 주요 메서드로는 GET, POST, PUT, DELETE 등이 있으며, 각각 데이터 조회, 생성, 수정, 삭제와 연결됩니다.
  • 상태 전송 (State Transfer): 클라이언트와 서버 간의 통신은 상태를 전송하면서 이루어집니다. 서버의 응답은 해당 자원의 상태를 나타내어야 합니다.
  • 무상태성 (Statelessness): 서버는 클라이언트의 상태를 관리하지 않습니다. 각 요청은 독립적이며, 클라이언트의 상태 정보는 클라이언트 측에서 유지됩니다. 이는 확장성을 향상시키는데 도움이 됩니다.
  • 캐싱 (Caching): 서버 응답은 캐시될 수 있으며, 클라이언트는 이를 활용하여 데이터 전송량을 줄이고 성능을 향상시킬 수 있습니다.

'Knowledge > Dev(Ops)' 카테고리의 다른 글

CI / CD  (0) 2023.10.22
애자일 방법론(Agile methodology)  (0) 2023.10.12
매개변수(Parameter)와 인자(Argument)  (0) 2023.08.21
웹훅(Webhook)  (0) 2023.08.19