의견.png

API

해시넷
218.146.11.81 (토론)님의 2019년 8월 20일 (화) 10:03 판
이동: 둘러보기, 검색

API(에이피아이)란 Application Programming Interface의 약자로서, 하나의 응용 프로그램이 다른 응용 프로그램에 요청을 보내고 응답을 받을 수 있도록 운영체제프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스(I/F)를 말한다. 응용 프로그램 인터페이스라고 한다.

개요

응용 프로그램을 빌드 할 때 API는 기본 구현을 추상화하고 개발자에게 필요한 개체 나 작업 만 노출하여 프로그래밍을 단순화한다. 전자 메일 클라이언트의 그래픽 인터페이스는 사용자에게 새 전자 메일을 가져오고 강조 표시하는 모든 단계를 수행하는 버튼을 제공할 수 있지만 파일 입력 / 출력용 API는 개발자에게 파일을 한 위치에서 다른 위치로 복사하지 않고 파일을 복사하는 기능을 제공할 수 있다. 개발자가 이면에서 발생하는 파일 시스템 작업을 이해하도록 요구한다.

등장배경

  • 프로그램을 하면 더 복잡한 함수를 코딩해야하는 문제에 맞닥뜨릴수 있다.
  • 프로그래밍 함수를 사용하면 복잡한 코딩을 줄일 수 있으나. 반복해서 사용할경우에 불편한 경우가 있다.
  • 똑같은 함수를 다시 만들 필요 없이 원하는 기능의 라이브러리 함수를 사용함으로써 보다 편하고 효율적인 프로그래밍이가능하다.
  • 이러한 필수적인 라이브러리에 접근하기 위해서 API가 필요하다.

특징(장,단점)

  • 운영체계가 제공하는 다양한 기능을 사용하게 해준다.
  • 라이브러리에서 필요한 함수를 골라서 사용하게 해준다.
  • OS를 제공하고 있는 메이커가 표준화한 API를 소프트하우스 등에 공개하면 주변 기기와의 인터페이스에 특히 주의하지 않아도 프로그램을 개발할 수 있고 애플리케이션 프로그램의 개발이 용이해진다.
  • 처음 접해봤을 땐 어렵다.

종류

  • 오픈 API(open API) : 누구나 사용할 수 있도록 공개된 API를 말한다. 구글이나 네이버의 지도 서비스 등이 있다.
  • 윈도우API(win API) : 마이크로소프트 윈도 운영체제들이 사용하는 API다. C/C++ 프로그램에서 직접 운영 체제와 상호 작용할 수 있도록 만들어졌으며, 그보다 더 낮은 수준의 제어는 Ntdll.dll을 사용한 낮은 수준의 DLL로 가능하다.
  • 자바API(java API) : 자바를 사용하여 쉽게 구현가능한 클래스계층구조로 된 라이브러리의 집합이다.
  • 프라이빗 API(private API) : 같은 기관 내부에서 근무하는 사람 또는 제한적으로 허용된 외부인이 사용할 수 있는 API를 말한다.
  • 신디케이션 API(syndication API) : 콘텐츠를 보유하고 있는 웹사이트네이버검색엔진 사이에 동기화 규약을 정하는 API이다. 특정 웹사이트에서 신디케이션 API를 사용할 경우 문서의 생성, 수정, 삭제 현황을 검색엔진에 즉시 알려줄 수 있다. 이에 따라 검색엔진 로봇이 해당 웹사이트에 방문할 때까지 기다리지 않고 신속하게 콘텐츠 변경 현황을 검색 포털 사이트에 반영할 수 있다. 웹 개방성을 위한 핵심 기술의 하나이다.

연혁

API 라는 용어 는 1968 년에 출판된 원격 컴퓨터 그래픽을 위한 데이터 구조 및 기술인 Ira W. Cotton의 기사에서 처음 등장했다. 

활용

라이브러리 및 프레임 워크

API는 일반적으로 소프트웨어 라이브러리와 관련이 있다. 라이브러리는 이 규칙 세트의 "실제 구현"인 반면 API는 "예상된 동작"(사양)을 설명하고 규정한다. 단일 API는 동일한 프로그래밍 인터페이스를 공유하는 서로 다른 라이브러리 형태로 여러 구현 (또는 추상이 아님)을 가질 수 있다. API를 구현에서 분리하면 한 언어로 작성된 프로그램이 다른 언어로 작성된 라이브러리를 사용할 수 있다. 예를 들어 Scala 및 Java는 호환 가능한 bytecode로 컴파일 되므로 Scala 개발자는 모든 Java API를 활용할 수 있다. API 사용은 관련된 프로그래밍 언어의 유형에 따라 달라질 수 있다. Lua 와 같은 절차 적 언어 용 API는 기본적으로 코드 실행, 데이터 조작 또는 오류 처리를 위한 기본 루틴으로 구성될 수 있지만 Java와 같은 객체 지향 언어 용 API는 클래스 및 클래스 메서드의 스펙을 제공한다. 언어 바인딩 도 API입니다. 한 언어의 기능을 다른 언어로 구현된 인터페이스에 매핑하면 언어 바인딩을 통해 한 언어로 작성된 라이브러리 나 서비스를 다른 언어로 개발할 때 사용할 수 있다. Fortran -to- Python 인터페이스 생성기인 SWIG 및 F2PY 와 같은 도구는 이러한 인터페이스를 쉽게 만들 수 있다. API는 또한 소프트웨어 프레임 워크와 관련될 수 있다. 프레임 워크는 여러 API를 구현하는 여러 라이브러리를 기반으로 할 수 있지만 일반적인 API 사용과 달리 프레임 워크에 내장된 동작에 대한 액세스는 콘텐츠를 새로운 클래스로 확장하여 조정됩니다 프레임 워크 자체에 연결했다. 더욱이, 제어의 전체 프로그램 흐름은 제어의 역전 또는 유사한 메커니즘에 의해 호출자의 제어 및 프레임 워크의 손에서 벗어날 수 있다.

운영 체제

API는 응용 프로그램과 운영 체제 사이의 인터페이스를 지정할 수 있다. POSIX는, 예를 들면, 하기 POSIX 준수 운영체제 작성된 응용 프로그램 활성화하고자 공통 API 세트를 지정 컴파일 다른 POSIX 준수 운영체제한다. Linux 및 Berkeley Software Distribution 은 POSIX API를 구현하는 운영 체제의 예이다. Microsoft는 특히 Windows API (Win32) 라이브러리 내에서 이전 버전과 호환되는 API에 대한 강력한 의지를 보였어 므로 이전 응용 프로그램은 "호환성 모드"라는 실행 파일 별 설정을 사용하여 최신 버전의 Windows에서 실행될 수 있다. API는 소스 코드 기반이고 ABI는 이진 기반이라는 점에서 API는 ABI ( Application Binary Interface) 와 다르다. 예를 들어 POSIX는 API를 제공하고 Linux Standard Base는 ABI를 제공한다.

원격 API

원격 API를 통해 개발자는 언어 또는 플랫폼에 관계없이 서로 다른 기술이 함께 작동할 수 있도록 특정 통신 표준인 프로토콜을 통해 원격 리소스를 조작할 수 있다. 예를 들어, Java Database Connectivity API를 사용하면 개발자는 동일한 기능 세트로 여러 유형의 데이터베이스를 조회할 수 있으며 Java 원격 메서드 호출 API는 Java 원격 메서드 프로토콜을 사용하여 원격으로 작동하지만 로컬로 표시되는 함수의 호출을 허용한다. 개발자. [14] [15] 따라서 원격 API는 객체 지향 프로그래밍에서 객체 추상화를 유지하는 데 유용하다. 프락시 객체에서 로컬로 실행되는 메서드 호출은 원격 프로토콜을 사용하여 원격 객체에서 해당 메서드를 호출하고 결과를 로컬로 반환 값으로 사용한다. 프락시 개체를 수정하면 원격 개체도 해당 수정된다.

웹 API

웹 API는 기능 제공자를 지정하고 API 사용자의 서비스 경로 또는 URL을 공개하기 위한 SLA (Service Level Agreement) 인 자산을 사용하는 엔터프라이즈와 애플리케이션 간에 상호 작용이 발생하도록 정의된 인터페이스이다. API 접근 방식은 여러 유형의 소비자에게 서비스를 제공하는 다른 응용 프로그램에 일련의 서비스에 대한 프로그램 인터페이스를 제공하는 것을 중심으로 하는 아키텍처 접근 방식이다. 웹 개발의 맥락에서 사용될 때 API는 일반적으로 HTTP ( Hypertext Transfer Protocol) 요청 메시지 와 같은 일련의 사양으로 정의되며, 일반적으로 XML (Extensible Markup Language)로 응답 메시지 구조의 정의와 함께 정의됩니다. ) 또는 JavaScript 객체 표기법 ( JSON) 형식이다. 예를 들어, 전자 상거래 중심의 웹 사이트에 추가하여 운송 서비스 주문을 용이하게 하고 사이트 개발자가 운송 업체의 요금 표를 웹 데이터베이스에 입력하지 않고도 현재 운송비를 자동으로 포함할 수 있는 운송 회사 API를 예로 들 수 있다. "웹 API"는 역사적으로 사실상 웹 서비스 와 동의어였지만 최근 트렌드 ( 웹 2.0))는 SOAP (Simple Object Access Protocol) 기반 웹 서비스 및 SOA ( Service-Oriented Architecture)에서 REST ( Representational Stateal State Transfer) 스타일 웹 자원 및 ROA ( Resource-Oriented Architecture)로 이동하고 있다. 이 추세의 일부는 웹 기반 온톨로지 엔지니어링 기술을 장려하는 개념인 RDF ( Resource Description Framework)를 향한 시맨틱 웹 이동과 관련이 있다. 웹 API를 사용하면 여러 API를 매시업이라고 하는 새로운 응용 프로그램으로 결합할 수 있다. 소셜 미디어 공간에서 웹 API는 웹 커뮤니티가 커뮤니티와 애플리케이션 간에 콘텐츠 및 데이터 공유를 용이하게 한다. 이러한 방식으로 한 곳에서 동적으로 생성된 콘텐츠를 웹의 여러 위치에 게시하고 업데이트할 수 있다. 예를 들어, 트위터의 REST API는 개발자가 핵심 트위터 데이터에 액세스할 수 있다 와 개발자가 트위터 검색 및 동향 데이터와 상호 작용하는 검색 API는 방법을 제공한다.

전망

  • 통신·방송·인터넷이 하나의 통합된 전달망을 기반으로 이들간 상호 융합된 서비스들을 제공할 수 있는 광대역 통합망으로 발전할 것이다. [1]
  • 금융감독원 기업공시국은 DART의 오픈API 정보제공 범위를 현재 기업개황 및 공시 목록에서 세부 공시 내용까지 확대해 21종을 추가 제공해서 공시 이용자가 DART 홈페이지에 방문하지 않아도 원하는 공시서류 원본파일을 다운로드할 수 있고, 사업보고서 및 분·반기보고서 상에서 공시 이용자들이 관심을 가질 정보를 활용할 수 있게 될 전망이다. [2]

각주

  1. 고안해 내는 재능,〈Open API (Application Program Interface)〉, 《ZUM》,2007-09-05
  2. 한수연 기자, 〈공시 보기 편해진다…DART, 오픈API 제공 확대〉, 《아이뉴스 24》,2009-06-11

참고자료

같이 보기


  의견.png 이 API 문서는 프로그래밍에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.