내가 생각하는 초보 개발자 필수 용어 정리 ! (2)

Ju Young Jun·2021년 8월 3일
3

👨‍💻

API

먼저 사전적 의미를 보자면(- 위키백과 -)

API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용 할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 주로 파일 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다.

그렇다면 UI는 무엇일까 ?

인터페이스(Interface)가 무엇일까 ? 컴퓨터 전공자라면 GUI나 UI라는 단어는 한 번쯤은 보았을 것이다. UI(사용자 인터페이스, User Interface)는 사용자와 기계나 시스템 같은 사물이 소통하는데 도움을 주는 매개체이다. UI의 예로 스마트폰의 홈 버튼이나 전원 버튼을 들 수 있다. 앱을 실행하다 바탕화면으로 돌아가고 싶을 때 "나 바탕화면으로 돌아갈래 !"라는 요청을 기기에게 전달해주는 게 홈 버튼이다.

GUI, CLI 란 ?

우리가 자주 쓰는 PC, 태블릿, 스마트폰을 살펴본다면, 적어도 아래와 같은 CLI 환경에서 접속하고 있진 않을 것이다. 보통 우리는 바탕화면과 시작 메뉴에 있는 아이콘을 더블 클릭하여 응용 프로그램들을 실행한다. 컴퓨터로 보고 있다면 크롬이나 파이어폭스, 사파리를 열어 이 블로그를 보고 있을 것이다. 이 모든 것들을 GUI(그래픽 사용자 인터페이스, Graphic User Interface)의 일부이다. GUI가 없다면 우리는 CLI를 사용해야 했을 것이다. 그래도 괜찮다 ! CLI(Command Line Interface)도 역시 인터페이스이기 떄문에 우리는 이것으로 파일 시스템에 접근하거나 프로그래밍을 하는 등의 일을 할 수 있다.
(cf > CLI란 명령줄 인터페이스 또는 명령어 인터페이스는 텍스트 터미널을 통해 사용자와 컴퓨터가 상호 작용하는 방식을 뜩한다. 즉, 작업 명령은 사용자가 컴퓨터 키보드 등을 통해 문자열의 형태로 입력하며, 컴퓨터로부터의 출력 역시 문자열의 형태로 주어진다.(- 위키백과 -))
=> UI와 GUI 그리고 CLI의 공통점은 어떤 사물(스마트폰, 컴퓨터, 인터넷 등)과 사용자 사이를 이어주는 다리역할을 한다는점이다. API도 마찬가지로 프로그램과 프로그램 간 다리가 되어준다. 또한 API는 사람을 위한 인터페이스가 아니라 프로그램을 위한 인터페이스라고 할 수 있다.

API는 문서 공개 없으면 쓸 수 없다.

API는 public, protected, private API 등으로 나뉘어 있는데 public은 우리가 다 알고 쓰는 그 공공 포털 API다. 공공 포털이 아니더라도 개발자 등록을 하고 키를 받아서 얼마간 무료로 쓸 수 있는건 거의 다 public이라고 보면 된다. 이에 반해 private은 API 제공자가 API를 공개하지 않은 거이다. 쉽게 말하면 사용법을 알려주지 않아서 쓸 수가 없어서 개발자가 그 제공자의 API를 쓸 수 없다. API 문서가 바로 이 사용법과 규격을 제공하는 문서이다. 이 사용법이 제공되어 있지 않다면 private이다. 보통 API 제공자들은 DB, 기능을 모듈화해서 인증받은 사용자(개발자 키가 있는 사람들)에게 규격화된 명령으로 데이터를 가져갈 수 있게 한다. 공짜인 API들 중 보통은 무료인데 일정 횟수 이상 호출하게 되면 비용을 지불해야 될 수동 있다.

API의 예시

API는 UI와 달리 사용자 눈에 보이지 않는다. 물론 자바스크립트 파일을 까보면 fetch 하면서 API 주소를 가져와서 데이터를 까는 게 있긴 하지만 보통 사용자들은 그렇게 안 한다(그쯤되면 초보 개발자가 아님). 거대한 인터넷 세상의 사원인 우리는 어느 자료실에 가서 자료를 가져와야 할 때마다 관리자들에게 열쇠를 요청한다. 관리자들에게 이름을 알리고 복사키를 받아가면 자료를 갖다 쓸 수 있는 것이다. 하지만 구글의 검색 순위 알고리즘이나 페이스북 사용자 데이터베이스를 조회하는 열쇠 일런 건 요청할 수 없다. 그건 제작자들이 허락하지 않은 private API이기 때문이다. 우리는 알게모르게 API를 쓰고 있다. 예를 들어 자바스크립트로 다음과 같은 코드를 짰다고 하자.

alert('Hello Wrold!');

이걸 실행하면 경고창으로 'Hello World!'가 나온다. 이 떄 이 경고창의 규격(크기, 닫기 버튼, 위치 선정 등)은 다 브라우저에서 제공해준 것이고 내용만 우리가 'Hello World!'이다. 즉 우리는 웹 API를 이미 쓰고 있는 것이다. 사실 우리가 매일같이 코딩하면서 쓰는 함수들 거의 전부가 API라고 해도 과언이 아니다. 요즘 세상에 기계어로 직접 코딩하는 사람은 거의 없기 때문이다. 또 다른 예시로, 내가 어떤 웹페이지를 만들었다. 최대한 많은 사람들이 와서 이 페ㅣ지를 구경해주면 좋겠다고 생각한다. 그래서 페이지에 공유 버튼을 만들기로 했다. 사람들이 네이버를 많이 쓰니깐 네이버에 공유하기를 하고 싶다. 어떻게 해야 될까 ?
제일 단순하게는 블로그나 카페, 밴드 등에 그냥 링크를 복사해서 게시물로 올리면 된다. 하지만 버튼 하나로 공유할 수 있는 방법은 없을까 ? 네이버에서는 그 방법을 제공한다. 네이버 공유 API 호출 예시와 인터페이스 명세이다. 여길 보면 utf-8 인코딩을 해서 url과 title 값을 넣어 GET 방식으로 요청을 해야 한다. 인코딩을 하지 않은 건 잘못된 예시라고 알려준다. 이런 게 API 규격이다. "공유하고 싶으면 이렇게 쓰세요 !"라고 알려주는 것이다. 만약 이런 게 없다면 웹 페이지에 서비스 공유하는 버튼을 만들 수가 없을 것이다. 내 페이지가 네이버 API를 사용해서 네이버 서비스에 내 페이지를 공유할 수 있도록 요청하는 것이다.

요약

  • 개발자가 프로그램을 만드는 데 필요한 어떤 기능을 직접 구현하지 않고 API 제공자들이 제공하는 데이터와 모듈 등을 갖다 쓸 수 있게 해주는게 API와 API 문서이다.
  • 예를 들어 내가 네이버를 통해 내 페이지를 네이버 서비스에 공유하고 싶다면 네이버에서 제공하는 공유하기 API를 문서에서 제시하는대로 맞춰서 쓰면 된다.
  • API가 공개되지 않았다면 쓸 수 없다. 또 공개 API라고 하더라도 호출 횟수가 많아지면 비용을 지불해야 할 수도 있다.

(글의 출처: https://dev-dain.tistory.com/50, https://www.a-mean-blog.com/ko/blog/%ED%86%A0%EB%A7%89%EA%B8%80/_/API )

profile
안녕하세요 :)

0개의 댓글