디자이너가 개발자와 일 하다 보니 (3)
API는 키보드와 유사하다고 할 수 있다.
키보드를 통해 우린 컴퓨터와 대화한다. 키보드의 버튼을 누르면 -> 키보드에서 컴퓨터로 전달되고 -> 스크린에서 텍스트를 볼 수 있다.
키보드를 통해서 컴퓨터와 인터랙션(interaction : 상호작용) 하는 것이다.
이와 같은 맥락으로 API는 프로그램과 프로그램이 서로 상호작용하는 것을 도와주는 매개체이다. (인간이 아닌) 코드들끼리 서로 소통하기 위해 만들어진 게 API이다.
API는 앱과 기기가 원활하게 통신할 수 있도록 한다.
1) 사용자가 앱에 접속하여 장바구니에 있는 리스트를 보고 싶어 한다. -> 장바구니 클릭
2) 클릭과 동시에 사용자는 서버에 장바구니 리스트를 보여달라고 요청(request)한다.
3) 서버는 사용자에게 Json 방식(문자열 방식)으로 응답(response)한다.
즉 API는 애플리케이션과 기기가 데이터를 원활히 주고받을 수 있도록 중간 매개체 역할을 해주는 셈이다.
*Json 방식이란
JavaScript Object Notation의 줄임말로, 속성 값으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷이다.
특히, 인터넷에서 자료를 주고 받을 때 그 자료를 표현하는 방법으로 알려져 있다.
그림 1은 장바구니에 담겨있는 상품에 대한 정보를 서버에서 응답해주는 Json 객체이다.
그렇다면 REST API, GraphQL API,, 등은 무엇인가?
'프로그램이 서로 소통할 수 있게 도와준다'라는 같은 목적을 가진 생김새만 다른 키보드들이다.
공공 API (public API)
공공 API 중에는 날씨 API가 있다. 만약 한국 날씨 정보를 원한다면 전 세계 날씨 정보를 갖고 있는 서버에서 한국 날씨 정보를 요청해야 할 것이다. 그러나 네이버가 날씨 데이터를 공개해도 대부분의 사람들은 그 데이터를 가지고 자신에게 맞게 사용하기가 어려울 것이다. 정보가 너무 방대하기 때문이다.
그렇기 때문에 네이버에선 자사 데이터를 활용하여 사용할 수 있게끔 '네이버 날씨 API'을 사용자들에게 공개한 것이다.
public API는 개방형 API로, 모두에게 공개된다. 누구나 제한 없이 API를 사용할 수 있는 게 특징이다.
누구나 제한 없이 API를 사용할 수 있지만 제3자에게 노출되거나 중요한 기업 데이터가 유출될 수도 있다. 그래서 어떤 API는 접근권한이 정해져 있다. 가끔은 API 사용에 제약이 있거나 사용하기 위해서 지불해야 할 때도 있다.
REST API
인터넷에서 시스템 또는 컴퓨터 간의 통신 채널을 제공하는 웹 서비스의 아키텍처 스타일이다.
따라서 REST API는 REST의 아키텍처 스타일로 지원되는 애플리케이션 프로그램 인터페이스이다.
즉, REAST는 통신하는 행위를 말하고 REAST API는 REAST방식으로 데이터를 주고받을 수 있게 해 놓은 수단이라고 할 수 있다.
*아키텍처란
최적화를 목표로 두고 시스템 구성과 동작원리 그리고 시스템의 구성환경 등을 설명 및 설계하는 청사진 또는 설계도이다. 기본 Computer Science 지식을 기반으로 주변 환경 등을 고려하여, 최상의 소프트웨어를 구성하는 방법을 연구하고 이를 바탕으로 가이드하는 역할을 한다.
*인터페이스란
서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면이다. 즉, 사용자가 기기를 쉽게 동작시키는데 도움을 주는 시스템을 의미한다
REST API 예
Instagram API를 사용하면 애플리케이션에서 사용자 태그, 사진, 계정 등을 검색할 수 있다.
Twitter는 개발자가 쿼리 하여 최신 트윗을 가져오거나 결과를 JSON 형식으로 반환하는 검색 쿼리를 제공할 수 있는 REST API도 제공한다.
GitHub는 또한 GitHub 문제 추적, 사용자 활동 추적, 앱에서 리포지토리 생성과 같은 작업을 수행하는 데 활용할 수 있는 슈퍼 REST API를 제공한다.
*쿼리란
쿼리는 웹 서버에 특정한 정보를 보여달라는 웹 클라이언트 요청(주로 문자열을 기반으로 한 요청이다)에 의한 처리이다. 쿼리는 대개 데이터베이스로부터 특정한 주제어나 어귀를 찾기 위해 사용된다.
피드백을 준
Back-end Developer_Aejeong Shin
Thank you :)
노마드 코더 Nomad Coders, API 기초개념 잡아드림. 5분 순삭, 2019. 7. 17
RapidAPI Staff, REST API vs Web API (vs SOAP API) [What’s the Difference?], April 16, 2020