
강의를 보며 공부를 하다가 느낀건데, 아직 API라는 용어에 대한 정확한 개념이 잡히지 않은 것 같다고 느꼈다.
내가 이해하고 있는 API는 카카오나 네이버, 영화 사이트등에서 JSON 형태로 제공하는 데이터들을 URL로 요청하면 거기에 맞는 데이터들을 제공하는것?
즉, 내가 하는 요청에 대한 응답을 하는 출입구 같은 역할? 로 이해를 하고 있었는데, 강의를 보다보니까 이런 URL 요청 뿐 만 아니라, 리액트에서 사용하는 Context도 API라고 부르는 것 같아서 헷갈렸다.
그래서 정확한 개념을 Velog에 기록하고자 이 글을 작성하게 됬다.
우선 API는 Application Programming Interface (애플리케이션 프로그래밍 인터페이스) 의 약자이고, API의 개념은 다음과 같이 설명되고 있다.
API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다.
이걸 봐서는 이게 무슨 뜻이고 어떤것들을 API라고 불러야 할 지 감이 잡히지 않았다.
다른 여러 블로그들을 참고했을때 API는 다음과 같이 요약되고 있었다.
- 개발자가 프로그래밍을 할 때, 어떤 기능을 직접 구현하지 않고도 사용할 수 있게끔 도와주는 것
- 프로그램과 프로그램 사이의 데이터를 주고받기 위한 규격
위를 토대로 이해하려고 했을 때 나는 다음과 같은 예시를 떠올릴 수 있었다.
영화정보를 제공하는 사이트에서 제공하는 API를 사용하면 우리가 직접 영화정보를 입력하지 않아도, 그 사이트에서 제공하는 API문서를 보고, 거기서 제공하는 사용방법을 따라서 url 요청을 보내면, 영화 정보를 받아 올 수 있다. (요즘 인기있는 영화정보만 요청, 지금 상영중인 영화만 요청 등) 거기서 제공하는 사용방법에 따라 다양한 데이터를 요청 할 수 있다.
그렇다면, 우리가 프로그래밍을 하면서 사용하는 함수들도 API라고 말 할 수 있을까?
예를들어, React에서 제공하는 Context는 우리가 만든 컴포넌트들이 특정 값에 접근할 때 prop 대신 좀 더 편하게 그 값에 접근하게 해준다. Context API 라고 부르는것 같다.
prop을 이용해서 값을 전달하는 대신 Context가 이 역할을 수월하게 해주니깐..?
그러면 리액트에서 사용하는 Hook도 API라고 부를 수 있는건가?? 라는 생각이 든다!
다른 블로그들을 참고하면서 이해 해봤을때 API 라는것은 어떤 프로그래밍언어에서 제공하는 기본 메소드들을 도구라고 하면, API라는건 그 도구들을 이용해 만든 어떤 기능을 하는 완성품! 우리가 직접 도구들을 이용해서 구현하는 시간을 아껴주는 것들! 이라는 느낌으로 이해하면 될 것 같았다.
그 동안 네이버나 카카오, 날씨, 영화사이트 등 에서 제공 하는것들을 API 라고 알고 있었는데, 이 뿐만 아니라 리액트나 다른 라이브러리 내부에서도 사용하는 어떤 기능을 하는 메소드들도 API 라는 개념에 속하는 것 같다!
속 시원하게 이해한 느낌은 아니지만, 앞으로 개발을 하면서 확실하게 API 가 무엇인가? 를 알 수 있었으면 좋겠다.