Django에서도 'API 다루기', 'open API' 등 API 많이 언급됐는데 정작 무슨 의미인지 몰라서 사전을 찾아보았다.
API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. - Wikipedia
여기서 Wikipedia는 언제찾아봐도 무슨말인지 잘 모르겠다.😂
또, 다른 블로그를 찾아보니...
API란 간단하게 이해하면 “내가 만든 프로그램이 개인 개발자, 기업, 기관이 제공하는 기능, 프로그램 등을 활용할 수 있게끔 도와주는 중간 매개체”
이 말도 어렵다...
더 쉽게 생각하면...
웹의 동작 원리를 보면
이때 1번 과정 즉,
프론트엔드가 백엔드가 정보를 요청(Request)할때 특정 규칙에 맞게 정보를 요청해야되는데 이런 규칙을 API(Application Programming Interface)라고 한다.
그렇다면 API의 쉬운 예를 들어보자
우리는 항공권을 예매할때 '대한항공'이나 '아시아나항공' 홈페이지에 직접 들어가서 예매를 할 수도 있지만
요즘은 네이버나 스카이스캐너와 같은 제 3의 경로를 통해 예매를 할 수 있다. 이런 경우 항공사에서 각 포털이나 앱 서비스에 API를 제공했다고 말한다.
또한, 우리가 흔히들 볼 수 있는 '카카오톡','네이버','페이스북','Gmail' 간편로그인 서비스가 바로 API를 제공한 케이스이다.
이렇게 API를 사용하면 개발을 간소화할 수 있고 개발시간, 접근성, 유지보수에 도움이 된다. 그래서 API를 분업화의 꽃이라고도 표현한다. 하지만 이를 생각하면 API를 사용할때 단점이 하나 있는데, 바로 우리가 API를 제공받는 서버가 다운되거나 이슈가 있을때 우리가 만든 서비스도 영향을 받는다는 것이다.
+궁금해서 찾아본거🤔
요즘 개발자 채용 공고를 보면 요구 기술 스택에 REST API 라는 스택이 있다. 이게 무엇인지 궁금해서 찾아보았다.
사전적 정의는
"HTTP 통신에서 어떤 자원에 대한 C.R.U.D 요청을 Resource와 Method로 표현하여 특정한 형태로 전달하는 방식"
즉, 'REST'란 어떤 자원에 대해 C.R.U.D(Create, Read, Update, Delete) 연산을 수행하기 위해 URI(Resource)로 요청을 보내는 것으로, Get, Post 등의 방식(Method)을 사용하여 요청을 보내며, 요청을 위한 자원은 특정한 형태(Representation of Resource)으로 표현됩니다. 그리고 이러한 REST 기반의 API를 웹으로 구현한 것이 RESTful API인데
예를 들어, 우리는 게시글을 작성하기 위해
http://localhost:8080/bbs/insertBoardInfo
라는 URI에 HTTP 통신 메소드인 'POST' 방식을 사용하여 JSON(Javascript Object Notaion)형태의 데이터를 전달한다고 하자.
위와 같이 C.R.U.D 연산에 대한 요청을 할 때, 요청을 위한 Resource(자원, URI)와 이에 대한 Method(행위: ex,POST) 그리고 Representation of Resource(자원의 형태: ex,JSON)을 사용하면 표현이 명확해지므로 이를 REST라 하며, 이러한 규칙을 지켜서 설계된 API를 Rest API 또는 Restful한 API라고 한다.