반응형

개발자인 우리 모두는 'API'라고 불리는 일반적인 용어를 만났을 것입니다. 프로젝트에서 API를 사용한 적이 있다는 사실, 또는 프로젝트 개발 중에 팀원으로부터 API라는 용어를 들은 적이 있어야 합니다. 그런데 여기서 문제가 되는 것은 'API가 무엇인가'입니다. 언어 도구 프레임워크 방법 아니면 다른 것일까요? 구체적으로 무엇입니까? 안심하셔도 됩니다.이 블로그에서는 'API란 무엇인가'를 가장 쉬운 방법으로 학습합니다. 그럼 시간낭비하지 말고 시작해요 블로그를 이해하기 쉽게 하기 위해 블로그 전체를 이하의 토픽으로 분할했습니다. 개념적인 관점에서 API를 학습합니다. Application Programming Interface API의 의미를 이해하려면 Interface의 의미를 이해해야 합니다. 인터페이스의 의미를 이해하기 위해 실제 예를 살펴보겠습니다.인터페이스를 학습한 후 API의 의미를 학습합니다. 위의 그림에서는 1개의 무선에 2개의 노브가 붙어 있습니다. 한편의 손잡이는, 다른 국에 접속하기 위한 무선 채널의 주파수를 변경해, 다른 한편의 손잡이는, 무선으로 재생되는 곡의 음량을 변경합니다. 무선 외부기기와는 별도로 안테나를 사용하여 무선을 다른 무선채널에 접속하는 내부 메커니즘이 있습니다. 다만, 유저측에서 보면, 사용할 수 있는 옵션은 2개 뿐입니다.하나는 라디오국을 변경하거나, 다른 하나는 라디오에서 재생하고 있는 음악의 음량을 올리거나 내리거나 합니다. 따라서 무선을 시스템으로 보고 자기 자신을 시스템 사용자로 간주하면 무선의 내부적인 동작에 번거로움이 없습니다. 라디오로 여러 채널의 음악을 들을 뿐입니다. 그것뿐입니다 주파수를 변경하기 위해 배선을 연결하거나 무선 볼륨을 변경하기 위해 일부 레지스터를 추가하거나 하는 경우는 없습니다. 필요한 것은, 내부의 무선 작업을 실시하지 않고 주파수와 음량을 변경하는 다이얼을 사용하는 것 뿐입니다. 위의 예에서 무선은 당사의 시스템으로 주파수를 변경하기 위해 도음량을 증감하기 위한 2개의 손잡이를 갖추고 있습니다. 이 무선은 시스템의 예로 무선에 있는 2개의 손잡이는 그 시스템의 API(인터페이스)입니다. 주파수를 변경할 수 있는 첫 번째 손잡이는 API1로 보고 음량을 변경할 수 있는 두 번째 손잡이는 API2라고 생각할 수 있습니다. API는 시스템 아키텍처나 시스템 내부 동작에 번거로움 없이도 사용자가 원하는 바를 쉽게 달성할 수 있도록 시스템이 사용자에게 제공하는 것입니다.

 

API를 사용할 수 있는 이점을 몇 가지 살펴보겠습니다.

사내 작업에 번거롭지 않습니다. API를 사용하여 사용자는 시스템 내부 작업에 번거로움 없이 태스크를 수행할 수 있습니다. 예를 들면, 무선을 사용하고 있을 때는, 주파수 수신기나 스피커의 동작에 대해 별로 신경이 쓰이지 않습니다. 우리는 음악만 듣고 싶어요. 내부변경에 의한 사용자에 대한 영향 없음: 시스템에 어떠한 내부변경이 있을 경우 사용자는 그 변경에 번거로울 필요가 없습니다. 사용자는 이전과 같은 방식으로 목적을 달성합니다. 예를 들면, 무선의 주파수 수신기를 콘덴서나 레지스터와 같은 다른 것으로 변경했을 경우, 사용자는 그것을 신경 쓸 필요가 없습니다. 라디오의 손잡이만으로 음악을 즐길 수 있습니다 개발 관점에서 API를 학습합니다. 지금까지 API의 개념적 관점과 API의 이점에 대해 살펴보았는데요. 블로그의 이 섹션에서는 개발의 관점에서 API를 학습합니다.왜냐하면 이것이 가장 중요하니까요. 개발에서는 누구나 API를 사용하고 있습니다 개발자의 관점에서도 API를 이해해야 합니다. 개발 중인 API 사용현황은 다음 범주로 분류할 수 있습니다. 소프트웨어 라이브러리를 개발하는 것이 개발한 것입니다. 예를 들어 Android 어플리케이션용 코드를 만들고 있다면 Android OS와 대화를 할 수 있습니다. Android 프레임워크에는 다양한 방법이 있으며 이러한 방법을 사용하여 OS를 조작할 수 있습니다. 간단히 말해서 소프트웨어 라이브러리를 작성하여 GitHub이나 다른 곳에 업로드하고 사용자가 제공한 방법으로 소프트웨어 라이브러리를 사용하는 경우는 API라고 합니다. 여기에서 라이브러리를 사용하는 사용자는 라이브러리의 코드에 신경쓰지 않습니다.

 

어떤 절차언어로 라이브러리를 작성한 경우 라이브러리 사용자는 라이브러리에서 필요한 출력을 얻기 위해 제공된 함수(다양한 파라미터 포함)를 사용합니다. 예를 들어 이미지를 처리하는 라이브러리를 구축한 경우 사용자는 필터 플래그를 붙여서 이미지 비트맵을 그 필터를 적용하여 이미지를 생성하는 함수에 넘길 수 있습니다. 객체 지향 언어의 경우 소프트웨어 라이브러리 및 프레임워크의 API는 라이브러리 또는 프레임워크를 통해 해당 프레임워크의 사용자에게 공개되는 클래스 및 메소드를 의미합니다. 사용자는 해당 메소드만 사용하고 라이브러리의 내부적인 작업에는 별 관심이 없습니다. Android Framework에는 많은 라이브러리가 공개되어 있습니다. 예를 들어 Android 디바이스에서 카메라를 사용할 경우 Android Framework에서 제공하는 API를 사용하여 이미지를 캡처할 수 있습니다. 운영체제는 다양한 공개 기능을 사용하여 애플리케이션의 시스템 리소스와 대화하는 방법을 제공합니다. 예를 들면, 컴퓨터상의 파일에 쓰는 경우는, OS 에 의해서 파일을 여는 기능이 제공되어 파일을 읽어내거나 편집할 수 있습니다. 필요한 건 파일 패스를 넘기는 것 뿐이에요.나머지는 OS에 의해 처리됩니다. 스토리지에서 파일을 열 때의 내부 작업에 대해 걱정할 필요는 없습니다. 따라서 OS가 시스템 리소스와 대화하기 위해 제공하는 방법은 API입니다. API는 자원으로 접근하는 방법이라는 관점에서 분류하는 것도 마찬가지입니다. 리모트 API도 사용할 수 있습니다. 예를 들어, 자바는 원격 서버에서 기능하는 데이터베이스 접속에 도움이 되는 데이터베이스 접속 프레임워크를 제공합니다. 이 경우의 가장 좋은 점은 데이터베이스의 유형을 신경 쓸 필요가 없다는 것입니다. 예를 들어 데이터베이스는 MySQL 또는 Postgre 입니다.SQL 등입니다. 단, 제공되는 방법을 사용하여 임의의 유형의 데이터베이스에 접속하여 그에 따라 변경할 수 있습니다. 대부분의 경우 API는 Web API 관점에서 참조됩니다.이것은 사람들이 API에 대해 이야기하는 가장 일반적인 콘텍스트입니다. 웹 API는 기업과 어플리케이션 사이에 인터페이스가 존재할 때 등장합니다. 예를 들어 서버가 있고, 비디오의 스트리밍이나 소셜 네트워크에의 액세스등의 서비스를 제공하고 있다고 칩니다. 따라서 그 기업은 몇 개의 API를 제공하고, 그 API를 사용하여 서버상에 존재하는 서비스와 대화할 수 있습니다. 기업에서 제공하는 서비스에 접속하기 위해서는 API가 URL을 제공하기 때문에 웹 관점에서 API를 얘기하자면 HTTP 프로토콜을 사용한다고 할 수 있고 그 대가로 원하는 응답을 받을 것입니다. API는 주로 웹 개발에서 사용되기 때문에 웹 개발이라는 관점에서 API를 학습합니다. 기본적으로 몇 가지 웹 서비스를 만들고 클라이언트가 웹 서비스에 접속하는 수단을 제공합니다. 이것을 예를 들어 이해하세요 회사에서 제품 목록을 가지고 있다고 칩니다. 따라서 사용자가 사내에서 입수 가능한 제품의 목록을 취득하는 경우에는 어떤 방법 또는 메커니즘을 지정해야 합니다. 이 경우 웹 서비스, 즉 제품 목록에 접속하기 위해서는 사용자에게 API를 제공하거나 쉽게 말해서 사용자가 인터넷을 통해 서비스에 접속하고자 하므로 HTTP 요구를 제공합니다. 따라서 백엔드로 서비스를 실행하고 있고, HTTP 요구 또는 단순한 URL에서 접근할 수 있는, 작성한 인프라스트럭처 방식 중 하나를 공개할 수 있습니다. URL은 다음과 같이 됩니다. 현재 시스템에서는 이들 API가 중요한 역할을 합니다. 당신이 애그리게이터 회사에서 사용자가 다양한 회사에서 이용할 수 있는 비행 목록을 볼 수 있는 웹 포털이 있다고 하겠습니다. 모든 회사에서 제공하는 API를 하나씩 호출하여 모든 회사로부터 비행 목록을 얻을 수 있습니다 여기서 여러 회사의 API를 호출할 수 있고 대신 하이브리드 시스템을 만들 수 있습니다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기

댓글을 달아 주세요

">