인터페이스(Interface)의 정의를 찾아보면 다음과 같이 나온다.
인터페이스(interface)는 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면이다. 즉, 사용자가 기기를 쉽게 동작시키는 데 도움을 주는 시스템을 의미한다. 컴퓨팅에서 컴퓨터 시스템끼리 정보를 교환하는 공유 경계이다.
-위키백과
👉 간단히 말해 인터페이스란 일종의 매개체이자 '소통하기 위한 접점'이며, 개발자에겐 통신과 상호작용을 위해 정해둔 약속[명세, 규약, 정해진 틀]의 개념이다.
(+ 여기서 소통은 데이터를 '읽거나 쓰기'라고 이해)
인터페이스는 그 접점 자체가 하드웨어인지, 소프트웨어인지에 따라 하드웨어 인터페이스, 소프트웨어 인터페이스로 구분할 수 있다. 우리가[사람이] 접할 수 있는 인터페이스(UI)를 예시로 들어보자.
하드웨어 인터페이스 | 소프트웨어 인터페이스 |
---|---|
키보드 모니터 리모컨 터치스크린 ... | 배달 어플리케이션 날씨 어플리케이션 ... |
우리가 바로 접할 수 있는 인터페이스의 예시로는, 데이터를 쓰기 위한 키보드/마우스나 리모컨, 데이터를 읽기 위한 모니터, 읽기와 쓰기를 모두 할 수 있는 터치스크린 등이 있다. 이는 모두 인터페이스 중 '하드웨어 인터페이스'에 해당한다. 이와 같이 배달/날씨 애플리케이션도 사용자와 시스템 사이에서 일어나는 소통의 접점으로 하나의 인터페이스이며, 그중 '소프트웨어 인터페이스'에 해당한다.
User Interface, 사용자 인터페이스는 말 그대로 '사용자가 소통하기 위한 접점'이다. 위에서 살펴본 예시인 키보드, 모니터, 배달 애플리케이션 모두 사용자가 시스템과 소통할 수 있도록 하는 매개체이므로 UI에 해당한다.
(+) GUI (Graphic User Interface, 그래픽 사용자 인터페이스)
: 편리한 사용을 위해 입출력 등의 기능을 알기 쉬운 그래픽(아이콘 등)으로 나타낸 UI
UI(User Interface)가 사용자와 맞닿아 있는 인터페이스였다면, API(Application Programming Interface)는 응용 프로그램과 맞닿아 있는 인터페이스, 응용 프로그램이 사용하는 인터페이스라고 볼 수 있겠다.
👉 백엔드 애플리케이션이 프론트엔드 애플리케이션에게 다양한 API를 제공하고, 프론트엔트 애플리케이션이 이를 이용해 사용자에게 UI를 제공하는 흐름이다! 사용자는 UI를 사용해 소통하고, 애플리케이션은 API를 사용해 소통하는 것 :>
일부는 '네가 이걸 선택하면, 내가 이걸 제공할게'를 구현해둔 것이 API이기에 이를 '메뉴판'으로 비유하기도 한다.
다음은 좀 더 직관적인 이해를 위한 예시이다.
참고 영상
우리가 기상청에서 날씨 정보를 얻으려 하는 상황이다.
이를 위해 기상청에서 제공해 준 API의 모습은
http://api.data.go.kr/weather/list
이러하고,
우리가 이 API를 사용하려면
curl http:/api.data.go.kr/weather/list
이런 방식으로 요청(Request)하고,
아래와 같은 응답(Response)을 받는다.{ "today": "2021-04-09", "weather": "맑음" }
위와 같은 형식의 API를 정확히는 "HTTP API" 라고 칭하며, 일반적으로 우리가 말하는 API, 오픈API는 HTTP API이다.