-
API 와 API 서버란?CS 지식/chat gpt와 TIL 2023. 7. 30. 15:03
API는 '프로그램과 프로그램을 연결시켜주는 매개체'이다.
꽃들과 다양한 꽃에 대한 정보 (꽃 공급 농장주, 꽃 이름, 색깔, 가격, 매출 물량.. 등)를 데이터베이스에 들어있는 데이터라고 보자.
이곳에 일하시는 분 (꽃집 관리자) = API
꽃집 방문 손님이나 꽃집 회계사, 주인, 파트너 등 (요청자/애플리케이션)
여기에서 보이듯, 보통 손님과 회계사는 액세스 권한이 다르다. 같은 데이터 베이스(꽃집)로 접속하나, 각자 영역에 따라 조회/사용 영역이 다른 것이다. 이런 권한과 영역, 액세스 등이 API 명세서와 인증 Authentication에서 관리된다. 그 조건하에서 각자 CRUD – Create(생성), Read(조회), Update(갱신), Delete(삭제)– 기능을 활용하여 각자의 앱을 구축하고 운영하는 것이 가능하다. 전체 데이터베이스는 이러한 조각조각 다양한 데이터 변화들과 기능들을 총괄적으로 저장하고 연결하는 리포지토리라고 볼 수 있다.
GPT는 API에 대해 아래와 같이 정의하고 있다.
API는 "Application Programming Interface"의 약자로, 프로그램들이 서로 소통하기 위해 정의된 인터페이스를 의미합니다.
간단하게 말하면, 프로그램들은 서로 다른 언어나 환경을 사용하며 작동하는데, 이들이 서로 데이터를 주고받거나 서비스를 호출할 수 있도록 도와주는 일종의 다리 역할을 하는 것이 API입니다.
예를 들어, 웹 앱에서 날씨 정보를 보여주는 기능을 추가하려면, 날씨 데이터를 제공하는 서비스의 API를 사용할 수 있습니다. 이 API를 호출하여 해당 서비스로부터 날씨 데이터를 가져와서 웹 앱에 표시할 수 있게 됩니다.
API는 다른 프로그램과 데이터 베이스, 그리고 기능들의 상호 통신 방법을 규정하고 도와주는 매개체이다. 소통하기 위한 명령어들의 집합으로 이해할 수 있습니다. 이를 통해 프로그램들은 서로의 기능을 이용하거나 데이터를 교환하여 더 복잡하고 유용한 기능을 구현할 수 있게 됩니다. API는 소프트웨어 개발에서 매우 중요한 개념이며, 웹 서비스, 모바일 앱, 클라우드 서비스 등 다양한 분야에서 활용됩니다.
이 외에도 우리가 사용하는 모바일 앱을 보면 외부 카메라, 앨범, 주소록, 외부 앱과 연결이 되어있는데, 이렇게 서로 다른 프로그램들끼리 통신을 하는 경우 보통 API를 이용해서 통신을 한다고 보면 된다.
아래와 같은 상황에 API는 프로그램과 프로그램 사이의 중재자 역할을 해준다.
1. 접근할 프로그램의 규칙이 잘 짜여지지 않고 복잡할 때
2. 프로그램 보안 상 외부에서 누구나 사용할 수 없고 제한된 기능들을 간접적으로 제공하고 싶을 때
프로그램끼리 통신을 하기 위해서는 프로그램을 만드는 개발자가 해당 프로그램이 잘 통신할 수 있도록 규칙을 설계하는게 중요하다. 대신할 프로그램들의 기능들을 미리 정리해서 규칙을 잘 세워둔다면, 클라이언트는 접근할 프로그램을 모르더라도 API를 이용해 손쉽게 통신을 할 수 있게 된다.
그러한 의미에서 API(Application Programming Interface)는 쉽게 이야기해 규칙들의 집합이라고 이해해도 무방하다.
대신할 프로그램의 기능들을 미리 정리해서 규칙을 잘 세워둔다면, 클라이언트는 접근할 프로그램을 모르더라도 API를 이용해서 손쉽게 통신을 할 수 있게 된다.
그렇게 되면 클라이언트 프로그램은 접근해야 하는 프로그램에 접근하지 않고 편하게 API를 통해 정보를 요청할 수 있게 된다. 이때 API 서버는 규격화 되어 있는 서버라고 생각하면 된다. 대표적으로 데이터베이스를 대신해서 규칙들(로그인하기, 상품정보 보기, 결제하기 등)이 정의되어 있다. 클라이언트는 데이터베이스가 아닌 API 서버와 통신하게 되는 것이다.
API 문서
보통 웹에서 로그인을 할 때, '카카오 로그인' 기능을 많이 넣는다. 이 경우에 클라이언트(개발자)들은 카카오 서버 개발자가 만들어 둔 서버 API를 이용해서 구현했을 것이다.
카카오 로그인 API문서를 보면 어디 (URL)에 무엇을 (Parameter)를 보내면 무슨 응답(Response)을 줄지가 전부 약속되어 있는 것을 확인할 수 있다.
아래는 내가 참고한 너무너무 설명이 잘 되어있는 블로그 출처들이다.
https://brunch.co.kr/@businessinsight/65
https://maily.so/grabnews/posts/b2341a
https://www.grabbing.me/IT-A-to-Z-By-1e1fbc981b7c4c03ac44943085ac8304
'CS 지식 > chat gpt와 TIL' 카테고리의 다른 글
[ AWS ] ENI ( Elastic Network Interface; 탄력적 네트워크 인터페이스 ) (0) 2023.08.11 DR 전략이란? (0) 2023.08.11 프록시란? (0) 2023.07.29 트랜잭션 로그란? (0) 2023.07.25 백로그 기반 지표란? (0) 2023.07.25