프로그래밍

API에 대해서 알아봅시다. (커피숍 비유)

*%$@$#@ 2022. 10. 10.
728x90
반응형

https://aws.amazon.com/ko/what-is/api/

 

API란 무엇인가요? - API 초보자를 위한 가이드 - AWS

 

aws.amazon.com

 

오늘은 API에 대해서 알아보고자 합니다. 마침 API에 대해서 일반적인 설명을 잘 요약한 페이지가 있어서 링크를 올려드립니다. 

 

API는Application Programming Interface의 약자로 소프트웨어간에 데이터를 주고 받기 위한 프로토콜이라고 설명할 수 있습니다. 

 

저는 API를 커피숍에 비유하곤 하는데요. 우리가 커피숍에서 커피를 주문해서 먹는다고 생각해 봅시다. 우리가 직접 매장 주방에 들어가 원두를 갈고 커피를 내려서 냉장고에 있는 우유를 꺼내서 라떼를 하나 만들어먹지 않습니다. 그냥 메뉴판을 보고 카페라떼 하나 주세요라고 주문을 하는거죠. 그럼 바리스타가 정해진 순서에 맞춰서 커피를 만들어서 우리 앞에 똭 놓아줍니다. 우리는 언제 어느 때라도 커피숍에 방문하면 언제나 동일한 라떼를 마실 수 있죠. 

 

API를 커피숍 메뉴판이라고 생각하면 쉽습니다. 다른 소프트웨어에서 필요한 데이터가 있을 때 직접 상대방 서버의 데이터베이스에 직접 접근하여 필요한 데이터를 긁어올 수는 없습니다. 공개할 수 없는 민감한 데이터가 있을 수도 있고 데이터를 조작하는 과정에서 중요한 데이터가 삭제될 수도 있기 때문이죠. 그래서 서버에서는 외부에서 필요에 의해서 데이터를 요청할 시에 정해진 범위 내에서 요청이 올 때마다 동일한 형태의 데이터를 내보내 줄 수 있는 API를 만들게 되고 우리는 API를 통해서 서버로부터 데이터를 받아올 수 있게 되는 것입니다. 

 

 

API의 구성요소 

API의 구성요소를 크게 다음의 4개로 나눌 수 있습니다. 

1. Endpoint 

2. Paths

3. Parameters

4. Authentication 

 

 

1. Endpoint 

- Endpoint는 URL이라고도 이야기합니다. 서버로부터 데이터를 얻을 때 주로 URL 주소를 이용해서 얻게 됩니다. 

 

2. Path, 3. Parameters 

- Endpoint와 연결되어 데이터의 세부사항을 정의할 때 사용됩니다. 예를들어 날씨정보를 얻는 API를 이용할 때 지역이나 날짜를 지정하는 등의 세부 정보를 입력하기 위해서 Path 및 Parameter를 이용하게 됩니다. 

 

4. Authentication

- API는 서버에서 외부에서 들어오는 요청에 대한 응답이기 때문에 불특정 다수로부터 수많은 요청을 받게 됩니다. 이는 고스란히 서버의 부담으로 작용하며 악의적으로 이를 이용하여 서버를 공격하는 경우도 있습니다. 이를 제한하고 보다 양질의 서비스를 제공하기 위해서 사용자 인증을 위한 장치들이 있는데 이를 Authentication이라고 볼 수 있습니다. 

 

예제를 통해서 알아보도록 하겠습니다.

 

아래의 홈페이지는 NASA ISS 우주정거장의 위치 데이터 API를 제공하는 사이트입니다. 

https://wheretheiss.at/w/developer

 

Where the ISS at?

Overview Welcome to the WTIA REST API! Using this service, you can get current, past, or future position of the ISS, get timezone information about a set of coordinates, and also get TLE data on the ISS. Authentication Currently there is no authentication

wheretheiss.at

 

페이지의 가장 첫 부분에서 우리는 해당 API가 어떠한 정보를 제공하는지 알 수 있습니다. 과거, 현재, 미래의 ISS의 위치정보 및 시간대 정보 및 TLE라는 정보도 제공한다고 합니다. 

 

별도의 자격조건(Authentication)은 필요없고, 데이터 업데이트 제한은 있어 초당 약 1회정도 호출할 수 있다고 하네요. 

 

화면의 아래쪽에 Endpoint 정보가 있습니다. URL 주소가 있는데 이를 복사하여 현재 사용하고 있는 브라우저에 붙여넣기 해 보도록 하겠습니다. 

 

예제 화면과 동일하게 이름과 id 정보를 확인하였습니다. Endpoint만 가지고는 저희가 원하는 위치정보를 확인할 수 없습니다. 그래서 좀 더 자세히 살펴보도록 하겠습니다. 

 

 

위의 예시는 Endpoint, Path, Parameter를 모두 포함하고 있는 API라고 볼 수 있습니다. 물음표기호(?)앞 'positions'까지가 path라고 볼 수 있고, 그 이후 정보들이 parameter로 볼 수 있습니다. 위의 API는 특정 시간에 ISS 우주정거장의 위치 정보를 반환합니다. 그리고 거리단위는 마일 단위로 작성됩니다. 제일 마지막의 & 기호 이후부터의 정보는 적지 않으면 기본값이 kilometer 단위로 표시됩니다. 

 

위의 주소를 브라우저에 복사 붙여넣기 후 결과를 보도록 합시다. 

 

앞에서 작성한 두개의 시각에서의 ISS정보가 표시된 것을 확인할 수 있습니다. 

 

지금은 우리가 직접 API 주소를 브라우저에 입력하여 데이터를 받았지만 앞으로 우리는 JavaScript를 통해서 자동으로 우리가 필요한 정보를 획득하는 과정을 진행해 보고자 합니다. 

 

API는 우리의 필요의 개수만큼 있다고 보시면 되고 정말 말도 안되게 많은 API가 존재합니다. 그리고 그중에는 위와 같이 무료로 제공되는 API도 상당히 많습니다.

 

개발을 하기 위해서 정말 중요한 개념이고 모두에게 동등하게 제공되는 API이지만 그 활용에 따라서 그 결과는 하늘과 땅차이가 나게 되는 부분이죠. 

 

앞으로 지속적으로 학습하면서 API의 활용에 대해서 익혀보도록 하겠습니다. 

 

 

 

 

728x90
반응형

댓글