API (Application Programming Interface)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 17:13, 24 августа 2017.

API (англ. Application Programming Interface) - это набор определений, протоколов и инструментов для разработки ПО и приложений. API-интерфейс разрабатывается для упрощения создания программ, путем предоставления всех необходимых функциональных блоков. API может быть разработано для web систем, ОС и баз данных, предоставляя среду для разработки приложений используя конкретный язык программирования. Например, программист, который разрабатывает приложения для Android может использовать Android API для взаимодействия с аппаратной частью.

API в процедурных языках программирования

В большинстве процедурных языков API определяет набор функций, которые выполняют определенные задачи или имеют доступ к конкретному компоненту программного обеспечения. К примеру, math API в UNIX системах является спецификацией, которая описывает как использовать функции описанные в библиотеке math. UNIX команда man 3 sqrt представляет сигнатуру функции квадратного корня в виде:

SYNOPSIS
            #include <math.h>
            double sqrt(double X);
            float  sqrtf(float X);
DESCRIPTION
       sqrt computes the positive square root of the argument. ...
RETURNS
       On success, the square root is returned. If X is real and positive...

В этом случае API интерфейс может быть интерпретирован как коллекция файлов включения, используемых программой, написанных на языке C. Также другие языки имеют процедурные библиотеки. К примеру, у Pearl есть специальный API для тех же математических задач со встроенной документацией, которая доступна через утилиту pearldoc:

$ perldoc -f sqrt
       sqrt EXPR
       sqrt    #Return the square root of EXPR.  If EXPR is omitted, returns
               #square root of $_.  Only works on non-negative operands, unless
               #you've loaded the standard Math::Complex module.

API в объектно-ориентированных языках

В этой простейшей форме API объекта представляет из себя описание, как данный объект функционирует в данном объектно-ориентированном языке. Обычно представляется в виде набора классов со связанными списками методов. Например, в Java, если класс Scanner используется, необходимо импортировать библиотеку java.util.Scanner. Объект типа Scanner может быть использован, при помощи вызова одного из методов класса.

import java.util.Scanner;

public class Test {
   public static void main(String[] args) {
       System.out.println("Enter your name:");
       Scanner inputScanner = new Scanner(System.in);
       String name = inputScanner.nextLine();
       System.out.println("Your name is " + name + ".");
       inputScanner.close();
  }
}

В примере ниже методы nextLine() и close() - это части API для класса Scanner, они также описаны в документации:

public String nextLine()

Advances this scanner past the current line and returns the skipped input...

Returns:

the line that was skipped

Throws:

NoSuchElementException - if no line found

IllegalStateException - if this scanner is closed

В этом случае API представляет из себя совокупность всех методов, публично представленных в классах (обычно называемых интерфейсами). Это означает, что API предписывает методы, при помощи которых взаимодействуют с объектом, полученным из описания классов.

Web API

Используется в веб-разработке, как правило, определенный набор HTTP-запросов, а также определение структуры HTTP-ответов, для выражения которых используют XML или JSON форматы. Web API является практически синонимом для веб-службы, хотя в последнее время за счет тенденции Web 2.0 осуществлен переход от SOAP к REST типу коммуникации. Веб-интерфейсы, обеспечивающие сочетание нескольких сервисов в новых приложениях, известны как гибридные.

Web для распространения контента

Практика публикации API позволила web сообществам создать открытую архитектуру для распространения контента и данных между сообществами и приложениями. В этом случае контент, который был создан в одном месте может быть динамически обновлен и опубликован на множестве различных интернет-ресурсах в сети.

Реализация

Стандарт POSIX определяет API, который позволяет написать большое количество вычислительных функций, которые смогут оперировать на множестве разных систем (Mac OS X, BSD). С другой стороны, совместимый API позволяет скомпилированным объектам кода функционировать без изменений в системе, которая реализует данный API. Это выгодно как для разработчика ОС, так и для пользователей, хотя это и требует различных библиотек реализующих необходимое API.

Ссылки