일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- python
- OpenCV
- @Autowired
- 알고리즘
- AWS
- Spring
- TypeORM
- 카카오 알고리즘
- 해시
- 카카오
- 컴포넌트스캔
- C++
- 스프링
- 가상면접사례로배우는대규모시스템설계기초
- 코테
- nestJS
- C언어
- 프로그래머스
- git
- Nodejs
- nestjs typeorm
- 파이썬
- 구조체배열
- @Component
- 코딩테스트
- 카카오 코테
- thymeleaf
- spring boot
- nestjs auth
- 시스템호출
- Today
- Total
공부 기록장 💻
[Web/API] API란? 본문
API란 무엇인가?
API: Application Programming Interface
응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있도록 만든 인터페이스
인터페이스 란 컴퓨터 시스템끼리 정보를 교환하는 공유 경계를 의미한다고 한다.
(TV의 전원을 켜기 위해서 리모콘을 사용한다.
이 때, 사전에 TV와 통신을 하고 TV를 조작하기 위해 신호를 보내도록 만든 장치인 리모컨이 인터페이스 장치이다.
사전에 TV에 정의된 규격에 의해 신호를 서로 주고 받기 위한 방법을 '인터페이스'라 할 수 있겠다.)
API에 대해 조사하며, 적절한 비유를 통해 API가 잘 설명되어 있는 것 같아 다음과 같은 사진을 가져와 보았다.
API는 레스토랑에서 손님
으로부터 주문을 받은 음식
을 요리사
에게 요청을 하여, 완성된 요리를 다시 손님에게 가져다 주는 점원
과도 같은 역할을 한다고 한다.
손님(요청하는 프로그램)이 주문할 수 있도록 메뉴(명령 목록)를 정리하고, 주문(명령)을 받아 요리사(요청받은 응용프로그램)와 상호 작용하여 요청된 메뉴(명령에 대한 값)을 다시 전달한다.
또다른 API의 개념을 설명할 수 있는 예시로는 자판기
가 있다. 이용자는 동전
을 넣고, 자판기로부터 원하는 물건
을 뽑는다. 자판기 관리자
는 열쇠로 자판기를 열고, 물건을 넣고 빼며 자판기를 관리한다.
(이때 자판기 내부의 물건들을 아무나 가져다 사용할 수 없다. 동전(돈)을 넣어야만 물건을 뽑을 수 있다.)
따라서 자판기를 API로, 그리고 동전을 API에 접근하기 위한 인증 토큰(token)으로 비유할 수 있겠다.
따라서 정리하자면...
*API란, 어떠한 응용 프로그램(웹 브라우저, 워드 프로세서, 데이터 베이스, 어플리케이션 등)에서 데이터를 전달해주는 방법이다. *
API의 역할과 필요성
1. 서버와 데이터베이스의 출입구 역할
데이터 베이스에 담겨 있는 중요한 정보들에 누구나 쉽게 접근해서는 안 된다. API는 허용된 이용자들에게만 일부 데이터에 접근할 수 있도록 권한을 부여해 준다.
2. 모든 접속을 표준화함, 범용적임
API는 기계/운영체제 상관 없이 모든 접속을 표준화하며, 누구에게나 동일한 액세스를 제공한다.
3. 정보 제공 - 공유 경제의 시대
모든 것을 새로 만들지 않아도 된다! API가 사용되는 대표적인 사례로 지도 서비스가 있다. 위치 데이터/지역 정보 등등.. 무수한 정보들을 필요로 하는 지도 서비스를 기업마다 새로 만들어야 한다는 것은 정말로 불편하고 번거로운 일이다. 따라서 누군가가 만든 지도 서비스의 일부만을 사와 이를 활용하여 서비스를 제작하게 되는 것이다.
-> 대형 플랫폼을 비롯한 기업은 자신의 서비스를 API 형태로 판매한다. (현재는 클라우드를 기반으로 서비스를 판매하고 있다고 한다.)
- ex) 네이버, 카카오톡, 페이스북의 간편 로그인 API 제공
- 구글 / 카카오 / 다음 T-map 지도 API
간편 로그인 API의 예시로 velog 회원가입 창을 가져와 보았다.
아래 사진과 같이 github, google, facebook 소셜 계정으로 간편하게 가입이 가능한 것을 확인할 수 있다.
velog에서는 위의 소셜 플랫폼으로부터 제공하는(혹은 판매하는) 간편 로그인/회원가입 API를 사용하고 있음을 알 수 있다.
(나는 github 계정을 통해 velog에 가입했었다. 처음 가입 할 때에는, 깃허브 계정과의 연동 authorization 허가 여부를 물어보는 깃허브 사이트 창이 떴었다. 현재는 이미 연동이 완료된 상태라, 해당 창이 뜨질 않아 사진을 따로 가져오진 못했다. 캡처하려고 했더니만...!
아무튼 github 계정에 로그인이 된 상태에서, velog와의 연동을 수락한다는 버튼을 클릭해야 가입이 완료가 되었던 것 같다.
이렇게 자동 계정 연동 API를 이용하면 여러 소셜 사이트에서 매번 가입을 하고, 아이디나 비밀번호를 까먹어 복잡한 과정을 통해 내 계정을 찾아야 했던 번거로움을 겪지 않아도 된다! 매우매우 간편하다 ~~ :) 보안에 있어서는 조금 주의해야 되겠지만 말이다...! )
API의 유형
API가 제공하는 데이터에 대한 접근성에 따라, 총 3가지 유형으로 나눌 수 있다.
1. private API
내부 API로, 회사 개발자가 자체 제품과 서비스를 개선하기 위해 내부적으로 발행하므로 제 3자에게는 노출되지 않는 API이다.
2. public API
개방형 API로, 모두에게 공개된다. 누구나 제한 없이 사용할 수 있다.
3. partner API
데이터 공유에 동의하는 특정인들만 사용할 수 있다. 파트너 회사 간에 소프트웨어를 통합하기 위해 종종 사용된다.
API 사용
예시들
- 기상청 API
- 코로나 데이터 API
- kakao developers에서 제공하는 로그인/소셜/메세지/지도 API
- google cloud platform에서 사용 가능한 google maps API
open API
국가 또는 공공기관에서 만든 open API 가 존재한다. 누구나 자유롭게 API에 접속하여 데이터를 가져다 사용할 수 있고, 다양한 통계자료/교통/인구 정보 등을 활용하여 유용한 서비스를 개발할 수 있다.
이러한 데이터는 다시 가공, 변형해서 배포하더라도 문제가 없다고 한다.
공공 open API를 활용한 서비스를 가져와 보았다.
코로나 확산이 막 시작되었던 시기에 마스크 재고 부족으로 인해 공적 마스크 대란이 일어난 상황이 문득 떠올랐다.
이러한 대란을 막기 위해 지역별/약국별 마스크 재고 현황을 알려주는 서비스가 빛을 발했었다.
이러한 마스크 알리미 서비스 또한 공공 open API가 제공하는 데이터를 사용하여 개발되었다!
더 찾아보니, <공공데이터 포털> 사이트로부터 제공되는 마스크 판매처/지도 API를 활용한 프로젝트에 대한 글이 있었다. (아래에 링크 첨부)
[Python] 공공api를 활용하여 내 주변 공적 마스크 판매처와 마스크 재고를 지도에 시각화해보자!
[Reference]
API에 대해 조사하며 참고한 자료이다.
앞으로 읽을 글들의 링크도 포함하였다.
API의 개념 관련 참고 자료들
- API란? 비개발자가 알기 쉽게 설명해드립니다!
- 서비스와 데이터 이해하기, API란?
- API 수익화란?
- API 설계란?
- API 보안
- API(애플리케이션 프로그래밍 인터페이스)란 - 개념, 기능, 장점
- [IT용어] API란 무엇인가?
- [용어 뜻/설명] API란?
- REST API(RESTful API, 레스트풀 API)란? 구현 및 사용법
- GraphQL이란?
API 실습/프로젝트 진행하며 읽어볼 참고 자료들
'# Tech Studies > Web' 카테고리의 다른 글
[Web/Backend/Auth] JWT란 무엇인가? (0) | 2022.08.23 |
---|---|
[Web Data Format] XML, JSON 포맷 파일이란? (0) | 2021.11.27 |
[Backend/Web Server/Django Deploy] 웹 서버와 WAS, Django 배포 (0) | 2021.08.21 |
[Backend/Database] 데이터베이스 모델링, RDB/NoSQL Modeling, MySQL 실습 (0) | 2021.08.13 |
[Backend/Database] Database, DB Query, RDB(Relational DB)/NoSQL, ORM(Object-Relational Mapping) (3) | 2021.08.04 |