CS 노트

비전공자를 위한 이해할 수 있는 IT 지식: 4장 정리

yourhm 2024. 7. 15. 16:17
책 '비전공자를 위한 이해할 수 있는 IT 지식' 4장을 읽으면서 학습한 내용을 요약, 정리한 포스팅입니다.

 

 

API(Application Programming Interface)

: 애플리케이션에서 데이터를 읽거나 쓰기 위해 사용하는 인터페이스

 

API는 네트워크 상에서 클라이언트와 서버가 서로 통신(요청/응답)할 때 서로 정보를 주고 받을 수 있게 연결해주는 다리와 같은 역할을 한다. 예시를 통해 이해해보자.

 

 

예시1. 날씨 앱

내가 날씨 앱을 열어서 내가 사는 지역의 오늘 날씨를 확인하기 위해서는 날씨 앱에 해당 지역의 날씨 정보가 있어야 한다. 날씨 앱은 직접 지역별 날씨 정보를 직접 갖출 수도 있지만 이를 위해서는 너무 많은 리소스가 필요하다. 이 때 지역별 날씨 정보를 제공하는 기상청에서 그 정보를 가져오면 된다. 날씨 앱과 날씨 정보를 제공하는 기상청의 서버가 서로 정보를 주고 받기 위한 대화를 해야하는데, 여기서 API가 등장한다.

 

기상청에서 제공하는 날씨 정보 API는 날씨 앱이 기상청 서버한테 "오늘 OO지역의 날씨 알려줘." 라고 말하는 방법을 정해주고, 서버는 그 요청을 받아서 "오늘 OO지역은 맑고 기온은 25도야." 라고 대답하게 된다. API를 통해 이런 대화가 가능해지고, 대화의 체계가 정해지는 것이다.

 

 

예시2. 학습관리를 도와주는 웹 애플리케이션

내가 친구들과 학교 과제로 학생들이 공부계획을 세우고 과제를 관리할 수 있는 웹사이트를 만들기로 했다고 하자. 학생들이 로그인한 후 공부계획을 추가하거나 수정할 수 있는 기능이 있는 웹사이트다.

 

학생들이 웹사이트에 로그인할 때, ID/비밀번호를 입력한 후 로그인 버튼을 누르면 이 정보가 웹사이트의 서버로 보내지게 된다. 서버는 이 정보를 받아서 데이터베이스에서 해당 학생의 정보를 찾고 일치하면 로그인 성공이라고 알려준다. 이 과정에서 API를 통해 학생(클라이언트)과 웹사이트의 서버가 서로 정보 주고 받을 수 있는 것이다. 이처럼 API는 웹사이트가 서버에 로그인 요청을 보내고, 서버가 이를 처리해서 응답하는 다리 역할을 한다.

 

또한 학생이 새로운 공부 계획을 추가하려고 할 때, 계획을 작성하고 저장 버튼을 누르면 이 정보가 서버로 보내지게 된다. 서버는 이 정보를 받아서 데이터베이스에 저장한다. 이때도 API를 통해 클라이언트(학생이 보는 웹페이지)와 서버가 소통하게 되는 것이다.

 

이렇게 내부에서도 API를 통해 웹사이트의 클라이언트와 서버가 서로 데이터를 주고받으며 소통할 수 있다. API를 사용하면 웹사이트의 다양한 기능을 구현하고 데이터를 효율적으로 관리할 수 있다.

 

 

[출처] https://docs.apinizer.com/key-concepts-16810528.html

 

 

Q. API를 호출한다는 것은 무슨 뜻이지? 호출 횟수에 따라 비용을 지불해야 할 수도 있다는 말은?

API를 호출한다는 말은 우리가 어떤 특정 기능이나 데이터를 얻기 위해 API를 통해 요청(request)을 보내는 것을 의미한다. 다시 말해, API를 통해 서버에 "이런 데이터를 주세요"라고 말하는 것. 예를 들어, 날씨 앱에서 사용자가 서울의 날씨를 확인하려고 한다고 해보자. 이때 앱은 기상청에서 제공하는 날씨 정보 API에 "서울의 현재 날씨를 알려줘"라고 요청을 보내는데 이걸 'API 호출'이라고 한다. 서버는 이 요청을 받아서 필요한 데이터를 날씨 앱으로 보내주게 된다.

호출 횟수가 많아지면 비용을 지불해야 할 수도 있다는 말은, API 제공자들이 API 사용에 대해 요금을 부과할 수 있다는 뜻이다. 많은 API 제공자들은 기본적으로 무료로 일정량의 API 호출을 허용하지만, 사용량이 많아지면 요금을 부과한다. 예를 들어, 어떤 날씨 API 제공자가 하루에 1000번까지는 무료로 호출할 수 있게 해준다고 해보자. 그런데 특정 앱이 너무 인기가 많아서 하루에 2000번 API를 호출하게 된다면, 초과된 1000번에 대해 비용을 지불해야 할 수도 있는 것!

이런 요금 구조는 API 제공자마다 다르지만, 일반적으로 다음과 같은 방식으로 요금을 부과한다.

 

1. 기본 무료 사용량: 일정 횟수까지는 무료로 사용 가능.
2. 초과 사용 요금: 무료 사용량을 초과하면 추가 비용 발생.
3. 구독 요금제: 정해진 요금을 내고 더 많은 호출 횟수를 사용할 수 있는 구독 서비스를 제공하기도 함.


이렇게 비용을 부과하는 이유는 API 제공자도 서버 운영, 데이터 관리 등 여러 가지 비용이 들기 때문이다. 많은 호출이 발생하면 그만큼 서버 자원도 많이 사용되니까, 이를 커버하기 위해 비용을 부과하는 것이다.

 

 

Q. API는 어떤 식으로 사용하는 걸까?

API 키:

보통 외부 API를 사용할 때, 접근 권한을 제어하기 위해 API 키를 발급받아 사용한다. 이는 외부 서비스에 요청을 보낼 때 사용자의 신원을 확인하고, 요청을 승인하는 데 사용된다.


내부 API:

내부 API는 보통 기업 내부에서만 사용되기 때문에, API 키를 발급받아 사용할 필요는 없다. 대신, 내부 보안 및 인증 방식을 통해 접근을 제어할 수 있다. 결론적으로 유저가 서비스를 이용할 때 발생하는 데이터 통신을 위해서는 기업 내부에서 자체적인 API를 개발하고 사용하는 경우가 많고 이때는 API 키를 발급받아서 사용하는 것이 아니라, 내부적으로 API를 설계하고 구현해서 사용하게 된다.

 

 

 

API 유형

▶ 접근 방식에 따른 분류

Public API (=Open API)

Private API

Partner API

 

▶ 상호작용 환경에 따른 분류

웹 API

라이브러리/프레임워크 API

운영체제 API

하드웨어 API

 

▶ 아키텍처 스타일에 따른 분류

Restful API

Rest API

SOAP API

gRPC API

GraphQL API

 

 

 

클라이언트 입장에서 바라본 API

CRUD는 데이터베이스 애플리케이션에서 데이터를 다룰 때 기준이 되는 요청이다. Create, Read, Update, Delete 의 각 첫 글자를 따서 CRUD 라고 한다. 데이터를 볼 수는 있는데 만드는 기획이 없거나, 데이터를 만들고 보는 기획이 있는데 수정하거나 삭제하는 기획이 없는 등의 실수들을 방지하기 위해서는 CRUD 관점에서 데이터를 바라보는 것이 중요하다. 만약 CRUD 중 특정 기능이 없는 기획이라면 그 기획 의도가 명확해야 하며, 이유도 설명할 수 있어야 한다.

 

클라이언트는 원하는 서버의 기능에 대해 해당 주소로 요청을 보내야 하므로 CRUD 요청별로 각각의 주소를 가지게 된다. 근데 이렇게 주소를 갖게되면 요청별로 주소가 너무 많아지고 관리하기가 힘들어진다. 따라서 사람들은 좀 더 체계적으로 API를 관리하고 싶어했고 그 영향으로 Restful API 를 사용하게 된다.

 

Restful API에서는 각 요청마다 다른 주소를 사용하는 대신 CRUD를 하나의 주소로 통합하여 관리하기 때문에, 이전보다  관리할 주소 개수가 줄어든다. 요청을 보낼 때 이를 구분하기 위해 어떤 요청을 보냈는지 파악할 수 있는 일종의 스티커 역할인 '메소드'를 붙여 함께 전송한다.

 

Create (생성해줘) POST
Read (불러와줘) GET
Update (바꿔줘) PUT(전체) / PATCH(일부)
Delete (지워줘) DELETE

 

 

 

서버 입장에서 바라본 API

클라이언트가 요청을 보내면, 서버는 코딩된 대로 생각한 후 응답을 보낸다. 응답에는 2가지 경우가 있다.

 

잘 됐어 200번대 코드
잘 안됐어 400번대 코드 (클라이언트의 요청에서 문제가 있는 경우)
  500번대 코드 (서버에 문제가 있는 경우)

 

 

 

클라이언트와 서버가 정보를 주고받을 때 사용하는 형식

요청을 보낼 때나 응답을 할 때 각각 형식이 다르다면, 그 형식에 맞춰 처리하기 위한 코드가 또 필요하다. 따라서 형식을 통일하여 다같이 쓰는 것이 효율적일 것이다. 과거에는 XML이라는 형식이 널리 쓰였고 지금도 종종 쓰이긴 하지만, 현재 가장 유명한 형식은 JSON이다. JSON은 비교적 단순하고 가독성이 높이며, 데이터의 구조를 명확하게 표현할 수 있다. 

 

 

 

API 문서란?

 API의 사용 방법, 기능, 제공하는 서비스, 데이터 형식 등을 설명하는 문서를 말한다. API 문서는 개발자들이 API를 올바르게 사용하고 통합할 수 있도록 필요한 정보를 제공한다. API문서는 API의 사용성을 높이고, 개발자들이 오류 없이 효율적으로 작업할 수 있도록 도와준다.

 

 

 

 

[참고자료]

짐코딩(GYM CODING) > API란 무엇인가? | 초보자를 위한 쉬운 개념 정리!!

https://youtu.be/Jg3FFBLyhK0?si=OglC7XxiDMsQdhX0

 

 

얄팍한 코딩사전 > API가 뭔가요? 가장 쉽게 이해시켜드림

https://www.youtube.com/watch?v=RI1LcuNgNj4

 

 

https://www.postman.com/what-is-an-api/

 

What is an API? A Beginner's Guide to APIs | Postman

APIs, or application programming interfaces, are sets of instructions that let applications communicate with each other. Learn more in our Beginner's Guide to APIs.

www.postman.com

 

https://dev-dain.tistory.com/50

 

봐도봐도 모르겠는 API 개념 설명 (Application Programming Interface)

✔️ 부정확한 내용이 포함되어 있다는 피드백을 받았습니다. 글은 나중에 다시 수정할 예정인데, 우선 댓글창을 확인해주시면 더 정확하게 이해하실 수 있을 것 같습니다. 감사합니다 ^^ 컴퓨

dev-dain.tistory.com