🔍 API를 알아보기 전에
API, REST API 이런 단어를 프로그래밍을 하다보면 꼭 듣게 되는데,
어떤건지는 대충 느낌을 알지만, 정확히 뭔지는 잘 설명을 못한다.
API에서 I는 Interface로 사전적 의미로는 "두 물체 사이에서 상호 간 대화" 이다.
즉, 컴퓨터에서 인터페이스는 read 또는 write의 역할을 해준다.
ex) 키보드는 사람과 컴퓨터를 연결해주는 (물리적)인터페이스
그래서 이번 기회에 구체적으로 API에 대해 알아보고 공부 해보고자 한다.
🌟 API (응용 프로그램 프로그래밍 인터페이스)
아래 정의는 똑같은 말인데, 좀 다양한 말들로 설명하면 좀 이해가 쉬워져서 여러개를 가져와봤다.
정의 1. 응용 프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있도록 만든 인터페이스
정의 2. 애플리케이션에서 데이터를 읽거나 쓰기위해 사용하는 인터페이스 (일련의 Sub 프로그램)
정의 3. 소프트웨어와 소프트웨어 간의 상호작용을 가능하게 해주는 인터페이스
해당 과정을 보면 API가 어떤 역할을 하는지 좀 더 이해하기 쉬울 것이다.
1. 우선 Clinet에서 API에게 요청을 보낸다.
2. API는 서버에게 클라이언트의 요청을 보내고 응답한다.
3. 서버로 부터 응답받은 요청을 API는 Client에게 응답한다.
이게 일련의 과정으로, 조금 더 쉽게 비유를 하자면
Clinet = 식당 손님 / API = 식당 웨이터 / Server = 요리사
이런 느낌으로 보면 좀 더 이해하기 수월 할 것이다.
위에 과정과 거의 일치하지만, 이번에는 좀 더 구체적으로 살펴보자.
Web app in browswe (End user) 측에서 Internet(App) 을 통해 Request를 보낸다.
개발자는 Internet(App)이 특정 API에 접근(Request) 가능하도록 설계한다.
API는 요청(Request)받은 것을 서버에 전달하고, 서버는 데이터 베이스(Assets)에 접근한다.
📌API가 필요한 이유
1. API는 데이터 형식을 정하는 규격으로, 데이터를 원활하게 주고받을 수 있다.
ex ) 다양한 사용자들이 같은 내용을 요청하더라고, 다른 스타일로 요청하게 되면 서버가 일일이 해석하고 처리 해야하는데, API로 표준화 시켜 데이터를 원활하게 주고 받을 수 있음
2. 민감한 데이터를 직접 노출시키지 않고 API를 통해 접근 함으로써 보안을 강화 시킬 수 있다.
3. 새로운 기능이나 서비스를 추가할 때, 비교적 쉽게 API를 이용해서 확장할 수 있다.
📚 API의 종류
📕Private API
Private API는 사내 자체 개발을 위한 목적으로, 회사 내부의 시스템간의 상호작용에 사용된다.
보통 외부에 공개되지 않으며, 내부 개발자만 접근할 수 있다.
보안성이 높고, 맞춤형 설계 및 관리가 편하다는 장점이 있지만,
서드 파티와 협업 및 확장이 어렵다는 단점이 있다.
📕 Open API
누구나 접근할 수 있는 공개된 API이다.
기업이나 정부가 유익한 서비스를 개발할 수 있도록 개발자들에게 검증된 데이터를 API 형태로 무료 제공한다.
ex) 공공데이터 포털 , 네이버 API, 카카오 API
보통 정부는 공공의 목적으로 API를 제공하고,
기업은 자사의 서비스 기능을 API를 통해 제공하고, 유저들이 자사의 서비스를 이용하게 됨으로써 서비스의 시장 점유율과 경쟁력이 높여갈 수 있다.
생태계 확장, 혁신, 브랜드 인지도 향상 등의 장점이 있지만,
아무래도 공개된 만큼 보안적 이수가 있고, 다양한 사용자를 지원해야 하기 때문에 복잡성도 있다.
📕 HTTP API
HTTP API는 HTTP 프로토콜을 통해 요청과 응답을 주고받는 API로,
우리가 생각하고 아는 대부분의 API는 HTTP 통신 규칙으로 소통하는 웹 기반 API이다.
(HTTP는 클라이언트와 서버와 데이터를 교환하는 프로토콜)
HTTP는 웹 표준 프로토콜이기 때문에 대부분 시스템에서 지원되고, 직관성이 있지만,
HTTP 프로토콜 특성상 고성능이 필요한 경우 제약이 있다.
HTTP API가 아닌 것들로는,
위에 그림과 같이 IoT 애플리케이션과 소통하기 위한 MQTT, CoAP 프로토콜을 사용하는 API들이 있다.
📕 REST API
API로 대화의 규격을 만들어 효과적으로 데이터 요청과 응답이 가능하지만, 개발자마다 규칙과 규격이 다르다.
체계를 만들기 위한 방법이 REST API (Representational State Transfer) 이다.
규칙과 내용을 더 쉽고 간단하게 만들어 내용만 봐도 직관적으로 무엇을 요청하는지 이해 가능하다.
주로 HTTP를 사용하여 정보의 자원과 명령할 행위를 표현한다.
높은 확장성, 단순성과 일관성을 제공, 캐시를 활용하여 성능 향상 등의 장점이 있지만,
REST의 구현 방식이 명확히 표준화 되어있지 않고, 복잡한 데이터 조회 및 조작에 대한 지원이 부족하다.
"https://fishking.tistory.com/manage/newpost/?type=post"
https://fishking.tistory.com/ 에서 manage(관리) / newpost(새로운 포스터)/ ?type=post (타입은 포스트 형태)
해당 주소는 URI (URL보다 큰 개념)를 나타내는 것으로, 직관적으로 어떤걸 의미 하는지 알 수 있다.
명령어에는 CRUD (Create, Read, Update, Delete)가 있다.
POST - Create
GET - Read
PUT / Patch - Update
DELETE - Delete
curl -v -X POST "https://kapi.kakao.com/v2/api/talk/memo/default/send"
해당 코드는 POST 명령어를 나타내는 카카오 메세지 REST API 코드이다.
(참고 블로그)
https://brunch.co.kr/@ogaa2143/30
'CS' 카테고리의 다른 글
1장. 컴퓨터 시스템 (Computer Systems A Programmer's Perspective) (1) | 2024.09.08 |
---|---|
인증과 인가 / 쿠키와 세션 / 토큰과 JWT 이란 ? (0) | 2024.09.06 |
명령 프롬프트(터미널)로 특정 파일 찾기 (0) | 2024.03.18 |
[Python] os/shutil 라이브러리 정리 (1) | 2023.11.09 |
Network,TCP/IP protocol 기본 개념 (컴퓨터 지식) (1) | 2023.10.24 |