Что такое API? Программный интерфейс приложения доступным языком
API, application programming interface – программный интерфейс приложения — одно из тех сокращений, которые используются повсеместно: начиная от инструментов командной строки до корпоративного Java-кода для веб-приложений Ruby on Rails. Если вы не собираетесь писать каждую строчку кода с нуля, вы будете взаимодействовать с внешними программными компонентами, каждый со своим собственным программным интерфейсом. И даже в том случае, когда вы создаете что-то совершенно новое, хорошо спроектированное программное приложение будет иметь внутренние API, чтобы организовать код и сделать компоненты более многоразовыми.
Если немного углубиться, API — это описание возможных взаимодействий с программной компонентой. Например, если взять за программную компоненту автомобиль, его API будет включать в себя информацию об возможности ускоряться, тормозить и включать радио. Он также будет содержать информацию о том, как можно ускориться: положите ногу на педаль газа и нажмите. Информация «что» и «как» объединяется в определении API, которое является абстрактным и отделенным от самого автомобиля.
Следует учесть, что название некоторых API часто используется для обозначения как возможных взаимодействий, так и фактического программного компонента, с которым вы взаимодействуете. Например, под «API Twitter» понимается не только набор правил для программного взаимодействия с Twitter, но, как правило, также имеется в виду то, с чем вы взаимодействуете.
Давайте рассмотрим API Java и API Twitter в качестве примеров. Во-первых, мы кратко разберем эти два API и то, как они выполняют определение «что» и «как». Затем мы поговорим о том, в каком случае вы, вероятно, будете использовать API, и что входит в хорошо спроектировано API.
API Java
Java API — это библиотека программных компонентов, доступных всем, кто установил Java Development Kit. Они реализуют общие задачи и обычно повышают производительность, поскольку программистам не нужно начинать с нуля каждый раз. Одним из основных элементов, используемых в программном обеспечении, является список, который, как и следовало ожидать, отслеживает список элементов. API Java определяет, что вы можете делать со списком: добавлять элементы, сортировать список, определять, есть ли элемент в списке и т. д. Он также указывает, как выполнять эти действия. Чтобы отсортировать список, вам необходимо указать, каким образом вы хотите это сделать: в алфавитном порядке, с цифровым нисходящим, от самого яркого до самого тусклого цвета и т. п.
API Twitter
API Twitter — это веб-интерфейс JSON API, который позволяет разработчикам программно взаимодействовать с данными Twitter. В отличие от Java API, который входит в состав Java Development Kit, API Twitter является веб-интерфейсом. Получить к нему доступ можно, отправив через Интернет запрос к сервисам, которые размещены на сайте Twitter.
С помощью веб-интерфейса, такого как Twitter, ваше приложение отправляет HTTP-запрос, так же как это делает веб-браузер. Но вместо ответа в виде веб-страницы, понятной человека, он возвращается в формате, который могут легко анализировать приложения. Существуют различные форматы, но Twitter использует популярный и простой в использовании формат JSON.
Одним из основных элементов в Twitter является, собственно, твит. API Twitter сообщает вам, что вы можете делать с ними: поиск или создание твита, сохранение твита. Он также рассказывает вам, как выполнить эти действия. Чтобы найти твиты, вам необходимо указать критерии поиска: хэштеги для поиска, геолокацию, язык и т. д.
API REST
Программный интерфейс приложения Twitter вместе со многими другими веб-интерфейсами API является примером API REST, который означает, что это API, который использует архитектурный стиль передачи состояния представления (Representational State Transfer) — REST. Формально введенный Роем Филдингом в его докторской диссертации в 2000 году, REST представляет собой набор архитектурных компонентов, принципов дизайна и взаимодействий, используемых для построения распределенных систем, в которых задействована информация любого рода (текст, видео и т. д.). По своей сути REST — это стиль построения систем, который позволяет гибко связывать и отображать информацию по сети, обеспечивая при этом структуру, необходимую для простого создания компонентов общего назначения.
Отличительная черта REST состоит в том, что он включает отправку данных в запрашивающее приложение. Это обеспечивает большую гибкость, позволяя приложению делать с данными все, что угодно, однако негативно влияет на эффективность. Отправлять информацию на обработку через веб занимает довольно много времени, чем если обрабатывать её непосредственно там где она хранится, и отправлять только результат. Проблема «эффективного» подхода заключается в том, что системам, на которых хранятся данные, необходимо заранее знать, что с ними будут делать приложения. Таким образом, для создания API, который имеет универсальное использование и гибкость, REST — это выход.