Что такое API? – Описание интерфейсов прикладного программирования – AWS
Что такое API?
API – это механизмы, которые позволяют двум программным компонентам взаимодействовать друг с другом, используя набор определений и протоколов. Например, система ПО метеослужбы содержит ежедневные данные о погоде. Приложение погоды на телефоне «общается» с этой системой через API и показывает ежедневные обновления погоды на телефоне.
Что значит API?
API – Application Programming Interface, что значит программный интерфейс приложения. В контексте API слово «приложение» относится к любому ПО с определенной функцией. Интерфейс можно рассматривать как сервисный контракт между двумя приложениями. Этот контракт определяет, как они взаимодействуют друг с другом, используя запросы и ответы. Документация API содержит информацию о том, как разработчики должны структурировать эти запросы и ответы.
Как работают API?
Архитектура API обычно объясняется с точки зрения клиента и сервера. Приложение, отправляющее запрос, называется клиентом, а приложение, отправляющее ответ, называется сервером. Итак, в примере с погодой база данных службы – это сервер, а мобильное приложение – это клиент.
Существует четыре различных способа работы API в зависимости от того, когда и почему они были созданы.
SOAP API
SOAP – Simple Object Access Protocol, т. е. простой протокол доступа к объектам. Клиент и сервер обмениваются сообщениями посредством XML. Это менее гибкий API, который был более популярен в прошлом.
RPC API
Такие API называются системой удаленного вызова процедур. Клиент выполняет функцию (или процедуру) на сервере, и сервер отправляет результат обратно клиенту.
Websocket API
Websocket API – это еще одна современная разработка web API, которая использует объекты JSON для передачи данных. WebSocket API поддерживает двустороннюю связь между клиентскими приложениями и сервером. Сервер может отправлять сообщения обратного вызова подключенным клиентам, что делает его более эффективным, чем REST API.
REST API
На сегодняшний день это самые популярные и гибкие API-интерфейсы в Интернете. Клиент отправляет запросы на сервер в виде данных. Сервер использует этот клиентский ввод для запуска внутренних функций и возвращает выходные данные обратно клиенту. Давайте рассмотрим API REST более подробно ниже.
Что такое REST API?
REST – это Representational State Transfer, т. е. передача репрезентативного состояния. REST определяет набор функций, таких как GET, PUT, DELETE и т. д., которые клиенты могут использовать для доступа к данным сервера. Клиенты и серверы обмениваются данными по протоколу HTTP.
Главной особенностью REST API является то, что такая передача выполняется без сохранения состояния. Без сохранения состояния означает, что серверы не сохраняют клиентские данные между запросами. Клиентские запросы к серверу аналогичны URL-адресам, которые вы вводите в браузере для посещения веб-сайта. Ответ от сервера представляет собой простые данные без типичного графического отображения веб-страницы.
Что такое web API?
Web API или Web Service API –это интерфейс обработки приложений между веб-сервером и веб-браузером. Все веб-сервисы являются API, но не все API являются веб-сервисами. REST API – это особый тип Web API, в котором используется стандартный архитектурный стиль, описанный выше.
Различные термины, которые относятся к API, такие как Java API или сервисные API, существуют потому, что исторически API были созданы до всемирной паутины. Современные web API – это REST API, и эти термины могут использоваться взаимозаменяемо.
Что такое интеграции API?
Интеграции API – это программные компоненты, которые автоматически обновляют данные между клиентами и серверами. Некоторыми примерами интеграции API являются автоматическая синхронизация данных в облаке из галереи изображений телефона или автоматическая синхронизация времени и даты ноутбуке при смене часового пояса. Организации также могут использовать их для эффективной автоматизации многих системных функций.
Каковы преимущества REST API?
REST API имеет четыре главных преимущества.
1. Интеграция
API используются для интеграции новых приложений с существующими программными системами. Это увеличивает скорость разработки, потому что каждую функцию не нужно писать с нуля. API можно использовать для усиления существующего кода.
2. Инновации
Целые отрасли могут измениться с появлением нового приложения. Компании должны быстро реагировать и поддерживать быстрое развертывание инновационных услуг. Они могут сделать это, внося изменения на уровне API без необходимости переписывать весь код.
3. Расширение
API-интерфейсы предоставляют компаниям уникальную возможность удовлетворять потребности своих клиентов на разных платформах. Например, карты API позволяет интегрировать информацию о картах через веб-сайты, Android, iOS и т. д. Любая компания может предоставить аналогичный доступ к своим внутренним базам данных, используя бесплатные или платные API.
4. Простота обслуживания
API действует как шлюз между двумя системами. Каждая система обязана вносить внутренние изменения, чтобы это не повлияло на API. Таким образом, любые будущие изменения кода одной стороной не повлияют на другую сторону.
Какие типы API существую?
API классифицируются как по архитектуре, так и по сфере применения. Мы уже рассмотрели основные типы архитектур API, поэтому мы предлагаем рассмотреть сферы применения.
Частные API
Это внутренние API организаций, которые используются только для соединения систем и данных внутри бизнеса.
Общедоступные API
Это API с общим доступом и могут быть использованы кем угодно. С этими типами API может быть (но не обязательно) сопряжена некоторая авторизация и стоимость.
Партнерские API
Эти API доступны только авторизованным сторонним разработчикам для содействия партнерским отношениям между предприятиями.
Составные API
Эти API объединяют два или более разных API для решения сложных системных требований или поведения.
Что такое адрес API и почему он важен?
Адреса API – это конечные точки взаимодействия в системе связи API. К ним относятся URL-адреса серверов, службы и другие конкретные цифровые местоположения, откуда информация отправляется и принимается между системами. Адреса API имеют решающее значение для предприятий по двум основным причинам.
1. Безопасность
Адреса API делают систему уязвимой для атак. Мониторинг API имеет решающее значение для предотвращения ненадлежащего использования.
2. Производительность
Адреса API, особенно с высоким трафиком, могут создавать узкие места и влиять на производительность системы.
Как обезопасить REST API?
Все API должны быть защищены посредством надлежащей аутентификации и мониторинга. Описание двух основных способов защиты безопасности REST API см. ниже.
1. Токены аутентификации
Они используются для авторизации пользователей для выполнения вызова API. Токены аутентификации проверяют, являются ли пользователи теми, за кого они себя выдают, и что у них есть права доступа для этого конкретного вызова API. Например, при входе на почтовый сервер почтовый клиент использует токены аутентификации для безопасного доступа.
2. Ключи API
Ключи API проверяют программу или приложение, выполняющее вызов API. Они идентифицируют приложение и гарантируют, что оно имеет права доступа, необходимые для выполнения конкретного вызова API. Ключи API не так безопасны, как токены, но они позволяют осуществлять мониторинг API для сбора данных об использовании. Возможно, вы заметили длинную строку символов и цифр в URL-адресе вашего браузера при посещении разных веб-сайтов. Эта строка представляет собой ключ API, который веб-сайт использует для выполнения внутренних вызовов API.
Как создать API?
Для создания API, с которым другие разработчики захотят работать и которому будут доверять, необходимы должные осмотрительность и усилия. См. пять шагов, необходимых для качественного проектирования API, ниже.
1. План API
Спецификации API, такие как OpenAPI, обеспечивают основу для разработки API. Лучше заранее подумать о различных вариантах использования и убедиться, что API соответствует текущим стандартам разработки API.
2. Разработка API
Разработчики API создают прототипы API, используя шаблонный код. После тестирования прототипа разработчики могут настроить его в соответствии с внутренними спецификациями.
3. Тестирование API
Тестирование API аналогично тестированию ПО и должно проводиться для предотвращения ошибок и дефектов. Инструменты тестирования API можно использовать для проверки устойчивости API к кибератакам.
4. Документирование API
Хотя API говорят сами за себя, документация по API действует как руководство по повышению удобства использования. Хорошо задокументированные API, которые предлагают ряд функций и вариантов использования, как правило, более популярны в сервис-ориентированной архитектуре.
5. Вывод API на рынок
Так же, как Amazon – это онлайн-рынок для розничной торговли, существуют торговые площадки API для разработчиков, чтобы покупать и продавать другие API. Размещение API может позволить монетизировать интерфейс.
Что такое тестирование API?
Стратегии тестирования API аналогичны другим методологиям тестирования ПО. Основное внимание уделяется проверке ответов сервера. Тестирование API включает описанные ниже аспекты.
- Выполнение нескольких запросов к адресам API для тестирования производительности.
- Написание модульных тестов для проверки бизнес-логики и функциональной корректности.
- Тестирование безопасности путем имитации системных атак.
Как написать документацию по API?
Составление исчерпывающей документации по API является частью процесса управления API. Документация по API может быть создана автоматически с помощью инструментов или написана вручную. См. рекомендации ниже.
- Написание объяснений на простом, легко читаемом русском языке. Документы, созданные инструментами, могут стать многословными и потребовать редактирования.
- Использование примеров кода для объяснения функциональности.
- Ведение документации, чтобы она была точной и актуальной.
- Ориентированность стиля письма на начинающих
- Охват всех проблем, которые API может решить для пользователей.
Как использовать API?
Шаги по внедрению нового API см. ниже.
- Получение ключа API Выполняется путем создания проверенной учетной записи у поставщика API.
- Установка клиента API HTTP Этот инструмент позволяет легко структурировать запросы API, используя полученные ключи API.
- В отсутствие клиента API можно попробовать самостоятельно структурировать запрос в браузере, обратившись к документации по API.
- Как только вы освоитесь с новым синтаксисом API, вы сможете начать использовать его в коде.
Где найти новые API?
Новые веб-API можно найти на торговых площадках API и в каталогах API.
Торговые площадки API – это открытые платформы, на которых любой желающий может выставить API на продажу. Каталоги API – это контролируемые репозитории, регулируемые владельцем каталога. Опытные разработчики API могут оценить и протестировать новый API, прежде чем добавить его в свой каталог.Популярные веб-сайты API см. ниже.
- Rapid API – крупнейший мировой рынок API с более чем 10 000 общедоступных API и 1 млн активных разработчиков на веб-сайте. RapidAPI позволяет пользователям тестировать API непосредственно на платформе перед совершением покупки.
- Public API – платформа группирует удаленные API в 40 нишевых категорий, что упрощает просмотр и поиск подходящего для ваших нужд объекта.
- APIForThat и APIList – на обоих веб-сайтах есть списки из более чем 500 web-API, а также подробная информация о том, как их использовать.
Что такое шлюз API?
Шлюз API – это инструмент управления API для корпоративных клиентов, использующих широкий спектр серверных служб. Шлюзы API обычно выполняют общие задачи, такие как аутентификация пользователей, статистика и управление скоростью, применимые ко всем вызовам API.
Amazon API Gateway – это полностью управляемый сервис для разработчиков, предназначенный для создания, публикации, обслуживания, мониторинга и обеспечения безопасности API в любых масштабах. API Gateway берет на себя все задачи, связанные с приемом и обработкой тысячи одновременных вызовов API, включая управление трафиком, поддержку CORS, авторизацию и контроль доступа, регулирование количества запросов, мониторинг и управление версиями API.
Что такое GraphQL?
GraphQL – это язык запросов, разработанный специально для API. Он отдает приоритет предоставлению клиентам именно тех данных, которые они запрашивают, и не более того. Такой язык разработан, чтобы сделать API быстрыми, гибкими и удобными для разработчиков. В качестве альтернативы REST GraphQL дает разработчикам интерфейсов возможность запрашивать несколько баз данных, микросервисов и API с помощью одной конечной точки GraphQL. Организации предпочитают создавать API с помощью GraphQL, потому что это помогает им быстрее разрабатывать приложения. Подробнее о GraphQL читайте здесь.
AWS AppSync – это полностью управляемый сервис, который упрощает разработку API-интерфейсов GraphQL, выполняя тяжелую работу по безопасному подключению к источникам данных, таким как AWS DynamoDB, AWS Lambda и т. д. AWS AppSync может передавать обновления данных в режиме реального времени через Websocket миллионам клиентов. Для мобильных и веб-приложений AppSync также обеспечивает локальный доступ к данным, когда устройства отключаются. После развертывания AWS AppSync автоматически масштабирует подсистему выполнения API GraphQL вверх или вниз в соответствии с текущим объемом запросов к API.
Как получить сервисы Amazon API?
Управление интерфейсом прикладного программирования является важной частью современной разработки программного обеспечения. Стоит инвестировать в инфраструктуру API, включая инструменты, шлюз и архитектуру микросервисов как для внутренних, так и для внешних пользователей.
Amazon API Gateway предусматривает полный набор функций для управления несколькими API одновременно с должной эффективностью. Вы можете бесплатно совершать до одного миллиона вызовов API, зарегистрировавшись на портале AWS.
AWS AppSync предоставляет возможность настраивать, администрировать и обслуживать полностью управляемую систему API GraphQL со встроенной бессерверной инфраструктурой высокого уровня доступности. Вы платите только за то, что реально используете. Минимальная плата или обязательный уровень использования отсутствует. Чтобы начать работу, войдите в консоль AWS AppSync.
Что такое API / Хабр
Содержание
- Что такое API
- API — набор функций
- Как составляется набор функций
- При чем тут слово «интерфейс»
- Как вызывается API
- Вызов API напрямую
- Косвенный вызов API
- Что значит «Тестирование API»
- Резюме
Слово «API» мелькает в вакансиях даже для начинающих тестировщиков. То REST API, то SOAP API, то просто API. Что же это за зверь такой? Давайте разбираться!
— А зачем это мне? Я вообще-то web тестирую! Вот если пойду в автоматизацию, тогда да… Ну, еще это в enterprise тестируют, я слышал…
А вот и нет! Про API полезно знать любому тестировщику. Потому что по нему системы взаимодействуют между собой. И это взаимодействие вы видите каждый день даже на самых простых и захудалых сайтах.
Любая оплата идет через API платежной системы. Купил билет в кино? Маечку в онлайн-магазине? Книжку? Как только жмешь «оплатить», сайт соединяет тебя с платежной системой.
Но даже если у вас нет интеграции с другими системами, у вас всё равно есть API! Потому что система внутри себя тоже общается по api. И пока фронт-разработчик усиленно пилит GUI (графический интерфейс), вы можете:
- скучать в ожидании;
- проверять логику работы по API
Конечно, я за второй вариант! Так что давайте разбираться, что же такое API. Можно посмотреть видео на youtube, или прочитать дальше в виде статьи.
Что такое API
API (Application programming interface) — это контракт, который предоставляет программа. «Ко мне можно обращаться так и так, я обязуюсь делать то и это».
Если переводить на русский, это было бы слово «договор». Договор между двумя сторонами, как договор на покупку машины:
- мои обязанности — внести такую то сумму,
- обязанность продавца — дать машину.
Перевести можно, да. Но никто так не делает ¯\_(ツ)_/¯
Все используют слово «контракт». Так принято. К тому же это слово входит в название стиля разработки:
- Code first — сначала пишем код, потом по нему генерируем контракт
- Contract first — сначала создаем контракт, потом по нему пишем или генерируем код (в этой статье я буду говорить именно об этом стиле)
Мы же не говорим «контракт на продажу машины»? Вот и разработчики не говорят «договор». Негласное соглашение.
API — набор функций
Когда вы покупаете машину, вы составляете договор, в котором прописываете все важные для вас пункты. Точно также и между программами должны составляться договоры. Они указывают, как к той или иной программе можно обращаться.
Соответственно, API отвечает на вопрос “Как ко мне, к моей системе можно обратиться?”, и включает в себя:
- саму операцию, которую мы можем выполнить,
- данные, которые поступают на вход,
- данные, которые оказываются на выходе (контент данных или сообщение об ошибке).
Тут вы можете мне сказать:
— Хмм, погоди. Операция, данные на входе, данные на выходе — как-то всё это очень сильно похоже на описание функции!
Если вы когда-то сталкивались с разработкой или просто изучали язык программирования, вы наверняка знаете, что такое функция. Фактически у нас есть данные на входе, есть данные на выходе, и некая магия, которая преобразует одно в другое.
И да! Вы будете правы в том, что определения похожи. Почему? Да потому что API — это набор функций. Это может быть одна функция, а может быть много.
Как составляется набор функций
Да без разницы как. Как разработчик захочет, так и сгруппирует. Например, можно группировать API по функционалу. То есть:
- отдельно API для входа в систему, где будет регистрация и авторизация;
- отдельно API для отчетности — отчет 1, отчет 2, отчет 3… отчет N. Для разных отчетов у нас разные формулы = разные функции. И все мы их собираем в один набор, api для отчетности.
- отдельно API платежек — для работы с каждым банком своя функция.
- …
Можно не группировать вообще, а делать одно общее API.
Можно сделать одно общее API, а остальные «под заказ». Если у вас коробочный продукт, то в него обычно входит набор стандартных функций. А любые хотелки заказчиков выносятся отдельно.
Получается, что в нашей системе есть несколько разных API, на каждое из которых у нас написан контракт. В каждом контракте четко прописано, какие операции можно выполнять, какие функции там будут
И конечно, функции можно переиспользовать. То есть одну и ту же функцию можно включать в разные наборы, в разные апи. Никто этого не запрещает.
Получается, что разработчик придумывает, какое у него будет API. Либо делает общее, либо распределяет по функционалу или каким-то своим критериям, и в каждое апи добавляет тот набор функций, который ему необходим.
При чем тут слово «интерфейс»
— Минуточку, Оля! Ты же сама выше писала, что API — это Application programming interface. Почему ты тогда говоришь о контракте, хотя там слово интерфейс?
Да потому, что в программировании контракт — это и есть интерфейс. В классическом описании ООП (объектно-ориентированного программирования) есть 3 кита:
- Инкапсуляция
- Наследование
- Полиморфизм
Инкапсуляция — это когда мы скрываем реализацию. Для пользователя все легко и понятно. Нажал на кнопочку — получил отчет. А как это работает изнутри — ему все равно. Какая база данных скрыта под капотом? Oracle? MySQL? На каком языке программирования написана программа? Как именно организован код? Не суть. Программа предоставляет интерфейс, им он и пользуется.
Не всегда программа предоставляет именно графический интерфейс. Это может быть SOAP, REST интерфейс, или другое API. Чтобы использовать этот интерфейс, вы должны понимать:
- что подать на вход;
- что получается на выходе;
- какие исключения нужно обработать.
Пользователи работают с GUI — graphical user interface. Программы работают с API — Application programming interface. Им не нужна графика, только контракт.
Вызвать апи можно как напрямую, так и косвенно.
Напрямую:
- Система вызывает функции внутри себя
- Система вызывает метод другой системы
- Человек вызывает метод
- Автотесты дергают методы
Косвенно:
- Пользователь работает с GUI
Вызов API напрямую
1.
Система вызывает функции внутри себяРазные части программы как-то общаются между собой. Они делают это на программном уровне, то есть на уровне API!
Это самый «простой» в использовании способ, потому что автор API, которое вызывается — разработчик. И он же его потребитель! А значит, проблемы с неактуальной документацией нет =)
Шучу, проблемы с документацией есть всегда. Просто в этом случае в качестве документации будут комментарии в коде. А они, увы, тоже бывают неактуальны. Или разработчики разные, или один, но уже забыл, как делал исходное api и как оно должно работать…
2. Система вызывает метод другой системы
А вот это типичный кейс, которые тестируют тестировщики в интеграторах. Или тестировщики, которые проверяют интеграцию своей системы с чужой.
Одна система дергает через api какой-то метод другой системы. Она может попытаться получить данные из другой системы. Или наоборот, отправить данные в эту систему.
Допустим, я решила подключить подсказки из Дадаты к своему интернет-магазинчику, чтобы пользователь легко ввел адрес доставки.Я подключаю подсказки по API. И теперь, когда пользователь начинает вводить адрес на моем сайте, он видит подсказки из Дадаты. Как это получается:
- Он вводит букву на моем сайте
- Мой сайт отправляет запрос в подсказки Дадаты по API
- Дадата возвращает ответ
- Мой сайт его обрабатывает и отображает результат пользователю
Вон сколько шагов получилось! И так на каждый введенный символ. Пользователь не видит этого взаимодействия, но оно есть.
И, конечно, не забываем про кейс, когда мы разрабатываем именно API-метод. Который только через SOAP и можно вызвать, в интерфейсе его нигде нет. Что Заказчик заказал, то мы и сделали ¯\_(ツ)_/¯
Пример можно посмотреть в Users. Метод MagicSearch создан на основе реальных событий. Хотя надо признать, в оригинале логика еще замудренее была, я то под свой сайт подстраивала.Но тут фишка в том, что в самой системе в пользовательском интерфейсе есть только обычный поиск, просто строка ввода. Ну, может, парочка фильтров. А вот для интеграции нужна была целая куча доп возможностей, что и было сделано через SOAP-метод.
Функционал супер-поиска доступен только по API, пользователь в интерфейсе его никак не пощупает.
В этом случае у вас обычно есть ТЗ, согласно которому работает API-метод. Ваша задача — проверить его. Типичная задача тестировщика, просто добавьте к стандартным тестам на тест-дизайн особенности тестирования API, и дело в шляпе!
(что именно надо тестировать в API — я расскажу отдельной статьей чуть позднее)
3. Человек вызывает метод
Причины разные:
- Для ускорения работы
- Для локализации бага (проблема где? На сервере или клиенте?)
- Для проверки логики без докруток фронта
Если система предоставляет API, обычно проще дернуть его, чем делать то же самое через графический интерфейс. Тем более что вызов API можно сохранить в инструменте. Один раз сохранил — на любой базе применяешь, пусть даже она по 10 раз в день чистится.
Для примера снова идем в Users. Если мы хотим создать пользователя, надо заполнить уйму полей!Конечно, это можно сделать с помощью специальных плагинов типа Form Filler. Но что, если вам нужны адекватные тестовые данные под вашу систему? И на русском языке?
Заполнение полей вручную — грустно и уныло! А уж если это надо повторять каждую неделю или день на чистой тестовой базе — вообще кошмар. Это сразу первый приоритет на автоматизацию рутинных действий.
И в данном случае роль автоматизатора выполняет… Postman. Пользователя можно создать через REST-запрос CreateUser. Один раз прописали нормальные “как настоящие” данные, каждый раз пользуемся. Профит!
Вместо ручного заполнения формы (1 минута бездумного заполнения полей значениями «лпрулпк») получаем 1 секунду нажатия на кнопку «Send». При этом значения будут намного адекватнее.
А еще в постмане можно сделать отдельную папку подготовки тестовой базы, напихать туда десяток запросов. И вот уже на любой базе за пару секунд вы получаете столько данных, сколько вручную вбивали бы часами!
Если вы нашли баг и не понимаете, на кого его вешать — разработчика front-end или back-end, уберите все лишнее. Вызовите метод без графического интерфейса. А еще вы можете тестировать логику программы, пока интерфейс не готов или сломан.
4. Автотесты дергают методы
Есть типичная пирамида автоматизации:
- GUI-тесты — честный тест, «как это делал бы пользователь».
- API-тесты — опускаемся на уровень ниже, выкидывая лишнее.
- Unit-тесты — тесты на отдельную функцию
Слово API как бы намекает на то, что будет использовано в тестах ツ
Допустим, у нас есть:
- операция: загрузка отчета;
- на входе: данные из ручных или автоматических корректировок или из каких-то других мест;
- на выходе: отчет, построенный по неким правилам
Правила построения отчета:
- Ячейка 1: Х — Y
- Ячейка 2: Z * 6
- . ..
GUI-тесты — честный тест, робот делает все, что делал бы пользователь. Открывает браузер, тыкает на кнопочки… Но если что-то упадет, будете долго разбираться, где именно.
API-тесты — все то же самое, только без браузера. Мы просто подаем данные на вход и проверяем данные на выходе. Например, можно внести итоговый ответ в эксельку, и пусть робот выверяет ее, правильно ли заполняются данные? Локализовать проблему становится проще.
Unit-тесты — это когда мы проверяем каждую функцию отдельно. Отдельно смотрим расчет для ячейки 1, отдельно — для ячейки 2, и так далее. Такие тесты шустрее всего гоняются и баги по ним легко локализовать.
Косвенный вызов API
Когда пользователь работает с GUI, на самом деле он тоже работает с API. Просто не знает об этом, ему это просто не нужно.
То есть когда пользователь открывает систему и пытается загрузить отчет, ему не важно, как работает система, какой там magic внутри. У него есть кнопочка «загрузить отчет», на которую он и нажимает. Пользователь работает через GUI (графический пользовательский интерфейс).
Но на самом деле под этим графическим пользовательским интерфейсом находится API. И когда пользователь нажимает на кнопочку, кнопочка вызывает функцию построения отчета.
А функция построения отчета уже может вызывать 10 разных других функций, если ей это необходимо.
И вот уже пользователь видит перед собой готовый отчет. Он вызвал сложное API, даже не подозревая об этом!
В первую очередь, мы подразумеваем тестирование ЧЕРЕЗ API. «Тестирование API» — общеупотребимый термин, так действительно говорят, но технически термин некорректен. Мы не тестируем API, мы не тестируем GUI (графический интерфейс). Мы тестируем какую-то функциональность через графический или программный интерфейс.
Но это устоявшееся выражение. Можно использовать его и говорить “тестирование API”. И когда мы про это говорим, мы имеем в виду:
- автотесты на уровне API
- или интеграцию между двумя разными системами.
Интеграция — когда одна система общается с другой по какому-то протоколу передачи данных. Это называется Remote API, то есть общение по сети, по некоему протоколу (HTTP, JMS и т.д.). В противовес ему есть еще Local API (он же «Shared memory API») — это то API, по которому программа общается сама с собой или общается с другой программой внутри одной виртуальной памяти.
Когда мы говорим про тестирование API, чаще всего мы подразумеваем тестирование Remote API. Когда у нас есть две системы, находящихся на разных компьютерах, которые как-то между собой общаются.
И если вы видите в вакансии «тестирование API», скорее всего это подразумевает умение вызвать SOAP или REST сервис и протестировать его. Хотя всегда стоит уточнить!
API (Application programming interface) — это контракт, который предоставляет программа. «Ко мне можно обращаться так и так, я обязуюсь делать то и это».
Контракт включает в себя:
- саму операцию, которую мы можем выполнить,
- данные, которые поступают на вход,
- данные, которые оказываются на выходе (контент данных или сообщение об ошибке).
Вызвать API можно как напрямую, так и косвенно:
- Система вызывает функции внутри себя
- Система вызывает метод другой системы
- Человек вызывает метод
- Автотесты дергают методы
- Пользователь работает с GUI
Когда говорят про API с тестировщиком, обсуждают два варианта:
- автотесты на уровне API (умение автоматизировать)
- интеграцию между двумя разными системами (обычно SOAP или REST, то есть работу в SOAP Ui или Postman).
Если вы хотите отработать второй вариант и поучиться отправлять запросики — используйте бесплатную систему Users! И мои обучающие видосики, например, «Как отправить REST-запрос за 5 минут».
Что такое API? — Объяснение интерфейсов прикладного программирования
Что такое API?
API — это механизмы, позволяющие двум программным компонентам взаимодействовать друг с другом с использованием набора определений и протоколов. Например, система программного обеспечения бюро погоды содержит ежедневные данные о погоде. Приложение погоды на вашем телефоне «общается» с этой системой через API и показывает вам ежедневные обновления погоды на вашем телефоне.
Что означает API?
API означает интерфейс прикладного программирования. В контексте API слово «приложение» относится к любому программному обеспечению с определенной функцией. Интерфейс можно рассматривать как сервисный контракт между двумя приложениями. Этот контракт определяет, как они взаимодействуют друг с другом, используя запросы и ответы. Их документация по API содержит информацию о том, как разработчики должны структурировать эти запросы и ответы.
Как работают API?
Архитектура API обычно описывается с точки зрения клиента и сервера. Приложение, отправляющее запрос, называется клиентом, а приложение, отправляющее ответ, называется сервером. Итак, в примере с погодой база данных бюро — это сервер, а мобильное приложение — это клиент.
API могут работать четырьмя различными способами в зависимости от того, когда и почему они были созданы.
API-интерфейсы SOAP
Эти API-интерфейсы используют простой протокол доступа к объектам. Клиент и сервер обмениваются сообщениями с использованием XML. Это менее гибкий API, который был более популярен в прошлом.
RPC API
Эти API называются удаленными вызовами процедур. Клиент выполняет функцию (или процедуру) на сервере, и сервер отправляет результат обратно клиенту.
Websocket API
Websocket API — еще одна современная разработка веб-API, которая использует объекты JSON для передачи данных. WebSocket API поддерживает двустороннюю связь между клиентскими приложениями и сервером. Сервер может отправлять сообщения обратного вызова подключенным клиентам, что делает его более эффективным, чем REST API.
API-интерфейсы REST
Это самые популярные и гибкие API-интерфейсы в Интернете на сегодняшний день. Клиент отправляет запросы на сервер в виде данных. Сервер использует этот ввод клиента для запуска внутренних функций и возвращает выходные данные обратно клиенту. Давайте рассмотрим API REST более подробно ниже.
Что такое REST API?
REST означает передачу репрезентативного состояния. REST определяет набор функций, таких как GET, PUT, DELETE и т. д., которые клиенты могут использовать для доступа к данным сервера. Клиенты и серверы обмениваются данными по протоколу HTTP.
Основная функция REST API – безотказность. Отсутствие состояния означает, что серверы не сохраняют клиентские данные между запросами. Клиентские запросы к серверу аналогичны URL-адресам, которые вы вводите в браузере для посещения веб-сайта. Ответ от сервера представляет собой простые данные без типичного графического отображения веб-страницы.
Что такое веб-API?
Web API или Web Service API — это интерфейс обработки приложений между веб-сервером и веб-браузером. Все веб-сервисы являются API, но не все API являются веб-сервисами. REST API — это особый тип веб-API, в котором используется стандартный архитектурный стиль, описанный выше.
Различные термины, связанные с API, такие как Java API или сервисные API, существуют потому, что исторически API были созданы до всемирной паутины. Современные веб-API — это REST API, и эти термины могут использоваться взаимозаменяемо.
Что такое интеграция API?
Интеграции API — это программные компоненты, которые автоматически обновляют данные между клиентами и серверами. Некоторыми примерами интеграции API являются автоматическая синхронизация данных в облаке из галереи изображений вашего телефона или автоматическая синхронизация времени и даты на вашем ноутбуке, когда вы путешествуете в другой часовой пояс. Предприятия также могут использовать их для эффективной автоматизации многих системных функций.
Каковы преимущества REST API?
REST API предлагают четыре основных преимущества:
1.
ИнтеграцияAPI используются для интеграции новых приложений с существующими программными системами. Это увеличивает скорость разработки, потому что каждую функциональность не нужно писать с нуля. Вы можете использовать API для усиления существующего кода.
2. Инновации
Целые отрасли могут измениться с появлением нового приложения. Предприятия должны быстро реагировать и поддерживать быстрое развертывание инновационных услуг. Они могут сделать это, внося изменения на уровне API без необходимости переписывать весь код.
3. Расширение
API-интерфейсы предоставляют компаниям уникальную возможность удовлетворять потребности своих клиентов на различных платформах. Например, API карт позволяет интегрировать картографическую информацию через веб-сайты, Android, iOS и т. д. Любая компания может предоставить аналогичный доступ к своим внутренним базам данных, используя бесплатные или платные API.
4. Простота обслуживания
API действует как шлюз между двумя системами. Каждая система обязана вносить внутренние изменения, чтобы это не повлияло на API. Таким образом, любые будущие изменения кода одной стороной не повлияют на другую сторону.
Какие существуют типы API?
API классифицируются как по архитектуре, так и по сфере применения. Мы уже изучили основные типы архитектур API, поэтому давайте взглянем на область их использования.
Частные API
Они являются внутренними для предприятия и используются только для подключения систем и данных в бизнесе.
Общедоступные API
Они открыты для всех и могут использоваться кем угодно. С этими типами API может быть или не быть некоторая авторизация и стоимость.
Партнерские API
Они доступны только авторизованным внешним разработчикам для поддержки партнерства между компаниями.
Составные API
Они объединяют два или более различных API для решения сложных системных требований или поведения.
Что такое конечная точка API и почему это важно?
Конечные точки API — это конечные точки взаимодействия в системе связи API. К ним относятся URL-адреса серверов, службы и другие конкретные цифровые местоположения, откуда информация отправляется и принимается между системами. Конечные точки API имеют решающее значение для предприятий по двум основным причинам:
1. Безопасность
Конечные точки API делают систему уязвимой для атак. Мониторинг API имеет решающее значение для предотвращения неправильного использования.
2. Производительность
Конечные точки API, особенно с высоким трафиком, могут создавать узкие места и влиять на производительность системы.
Как защитить REST API?
Все API должны быть защищены посредством надлежащей проверки подлинности и мониторинга. Два основных способа защиты REST API включают:
1. Токены аутентификации
Они используются для авторизации пользователей для выполнения вызова API. Токены аутентификации проверяют, являются ли пользователи теми, за кого они себя выдают, и что у них есть права доступа для этого конкретного вызова API. Например, когда вы входите на свой почтовый сервер, ваш почтовый клиент использует токены аутентификации для безопасного доступа.
2. Ключи API
Ключи API проверяют программу или приложение, выполняющее вызов API. Они идентифицируют приложение и гарантируют, что оно имеет права доступа, необходимые для выполнения конкретного вызова API. Ключи API не так безопасны, как токены, но они позволяют отслеживать API для сбора данных об использовании. Возможно, вы заметили длинную строку символов и цифр в URL-адресе вашего браузера при посещении разных веб-сайтов. Эта строка представляет собой ключ API, который веб-сайт использует для выполнения внутренних вызовов API.
Как создать API?
Для создания API, с которым другие разработчики захотят работать и которым будут доверять, требуются тщательная проверка и усилия. Вот пять шагов, необходимых для качественной разработки API:
1. Планирование API
Спецификации API, такие как OpenAPI, обеспечивают основу для разработки вашего API. Лучше заранее подумать о различных вариантах использования и убедиться, что API соответствует текущим стандартам разработки API.
2. Создание API
Разработчики API создают прототипы API, используя шаблонный код. После тестирования прототипа разработчики могут настроить его в соответствии с внутренними спецификациями.
3. Тестирование API
Тестирование API аналогично тестированию программного обеспечения и должно проводиться для предотвращения ошибок и дефектов. Инструменты тестирования API можно использовать для проверки устойчивости API к кибератакам.
4. Задокументируйте API
Хотя API говорят сами за себя, документация по API служит руководством для повышения удобства использования. Хорошо задокументированные API-интерфейсы, которые предлагают ряд функций и вариантов использования, как правило, более популярны в сервис-ориентированной архитектуре.
5. Маркетинг API
Так же, как Amazon — это интернет-рынок для розничной торговли, существуют торговые площадки API для разработчиков, которые могут покупать и продавать другие API. Размещение вашего API может позволить вам монетизировать его.
Что такое тестирование API?
Стратегии тестирования API аналогичны другим методологиям тестирования программного обеспечения. Основное внимание уделяется проверке ответов сервера. Тестирование API включает:
- Создание нескольких запросов к конечным точкам API для тестирования производительности.
- Написание модульных тестов для проверки бизнес-логики и функциональной корректности.
- Тестирование безопасности путем имитации системных атак.
Как написать документацию по API?
Написание исчерпывающей документации по API — часть процесса управления API. Документация по API может быть создана автоматически с помощью инструментов или написана вручную. Вот некоторые рекомендации:
- Написание объяснений на простом, легко читаемом английском языке. Документы, созданные инструментами, могут стать многословными и потребовать редактирования.
- Использование примеров кода для объяснения функциональности.
- Поддержание документации в актуальном состоянии.
- Направление стиля письма на начинающих
- Охватывает все проблемы, которые API может решить для пользователей.
Как использовать API?
Шаги по внедрению нового API включают:
- Получение ключа API. Это делается путем создания проверенной учетной записи у поставщика API.
- Настройте клиент HTTP API. Этот инструмент позволяет легко структурировать запросы API, используя полученные ключи API.
- Если у вас нет клиента API, вы можете попробовать самостоятельно структурировать запрос в своем браузере, обратившись к документации по API.
- Когда вы освоитесь с новым синтаксисом API, вы сможете начать использовать его в своем коде.
Где я могу найти новые API?
Новые веб-API можно найти на торговых площадках API и в каталогах API. Торговые площадки API — это открытые платформы, на которых любой желающий может выставить API на продажу. Каталоги API — это контролируемые репозитории, регулируемые владельцем каталога. Опытные разработчики API могут оценить и протестировать новый API, прежде чем добавить его в свой каталог.
Некоторые популярные веб-сайты API включают:
- Rapid API — крупнейший мировой рынок API с более чем 10 000 общедоступных API и 1 миллионом активных разработчиков на сайте. RapidAPI позволяет пользователям тестировать API непосредственно на платформе перед совершением покупки.
- Общедоступные API-интерфейсы. Платформа группирует удаленные API-интерфейсы в 40 нишевых категорий, что упрощает просмотр и поиск подходящего для ваших нужд.
- APIForThat и APIList — на обоих этих веб-сайтах есть списки из более чем 500 веб-API, а также подробная информация о том, как их использовать.
Что такое шлюз API?
Шлюз API — это инструмент управления API для корпоративных клиентов, использующих широкий спектр внутренних служб. Шлюзы API обычно выполняют общие задачи, такие как аутентификация пользователей, статистика и управление скоростью, применимые ко всем вызовам API.
Amazon API Gateway — это полностью управляемая служба, которая позволяет разработчикам легко создавать, публиковать, поддерживать, отслеживать и защищать API любого масштаба. Он выполняет все задачи, связанные с приемом и обработкой тысяч одновременных вызовов API, включая управление трафиком, поддержку CORS, авторизацию и контроль доступа, регулирование, мониторинг и управление версиями API.
Что такое GraphQL?
GraphQL — это язык запросов, разработанный специально для API. Он отдает приоритет предоставлению клиентам именно тех данных, которые они запрашивают, и не более того. Он разработан, чтобы сделать API быстрыми, гибкими и удобными для разработчиков. В качестве альтернативы REST GraphQL дает разработчикам интерфейсов возможность запрашивать несколько баз данных, микросервисов и API с помощью одной конечной точки GraphQL. Организации предпочитают создавать API с помощью GraphQL, потому что это помогает им быстрее разрабатывать приложения. Подробнее о GraphQL читайте здесь.
AWS AppSync — это полностью управляемый сервис, который упрощает разработку API-интерфейсов GraphQL, выполняя тяжелую работу по безопасному подключению к источникам данных, таким как AWS DynamoDB, AWS Lambda и т. д. AWS AppSync может передавать обновления данных в реальном времени через веб-сокеты миллионам пользователей. клиентов. Для мобильных и веб-приложений AppSync также обеспечивает локальный доступ к данным, когда устройства отключаются. После развертывания AWS AppSync автоматически масштабирует механизм выполнения API GraphQL вверх и вниз в соответствии с объемами запросов API.
Как получить услуги Amazon API?
Управление интерфейсом прикладного программирования является важной частью современной разработки программного обеспечения. Стоит инвестировать в инфраструктуру API, включая инструменты, шлюз и архитектуру микросервисов как для внутренних, так и для внешних пользователей.
Amazon API Gateway предлагает полный набор функций для одновременного и эффективного управления несколькими API. Вы можете бесплатно совершать до миллиона вызовов API, зарегистрировавшись на портале AWS.
AWS AppSync предлагает полностью управляемую настройку, администрирование и обслуживание GraphQL API со встроенной высокодоступной бессерверной инфраструктурой. Вы платите только за то, что используете, без минимальных комиссий или обязательного использования сервиса. Чтобы начать работу, войдите в консоль AWS AppSync.
Что такое API? (Интерфейс прикладного программирования)
Эта статья была написана Ма-Кеба Фрай, автором SEO-контента в MuleSoft.
Многие задаются вопросом: «Что такое API?» API — это аббревиатура от Application Programming Interface — программный посредник, который позволяет двум приложениям взаимодействовать друг с другом. API — это доступный способ извлечения данных и обмена ими внутри и между организациями.
API-интерфейсы окружают нас повсюду. Каждый раз, когда вы используете приложение для совместных поездок, отправляете мобильный платеж или меняете температуру термостата со своего телефона, вы используете API.
Когда вы используете одно из вышеперечисленных приложений, они подключаются к Интернету и отправляют данные на сервер. Затем сервер извлекает эти данные, интерпретирует их, выполняет необходимые действия и отправляет обратно на ваш телефон. Затем приложение интерпретирует эти данные и представляет вам нужную информацию в удобочитаемом виде. Каковы характеристики API?
Термин «API» обычно используется для описания интерфейсов подключения к приложению. Однако с годами современный API приобрел некоторые уникальные характеристики, которые действительно изменили технологическое пространство. Во-первых, современные API-интерфейсы придерживаются определенных стандартов (обычно HTTP и REST), которые позволяют API быть удобными для разработчиков, самоописываемыми, легкодоступными и широко понимаемыми.
Кроме того, сегодня к API относятся скорее как к продуктам, чем как к коду. Они предназначены для использования определенной аудиторией (например, разработчиками мобильных устройств), они задокументированы и имеют версии таким образом, чтобы пользователи могли иметь четкие ожидания относительно их обслуживания и жизненного цикла.
Поскольку API-интерфейсы более стандартизированы, их можно отслеживать и управлять как производительностью, так и масштабированием. И, самое главное, у них гораздо более жесткая дисциплина в отношении безопасности и управления. На практике это работает так: возвращаясь к примеру с приложением для телефона с прогнозом погоды, данные вашего телефона никогда полностью не передаются серверу.
Точно так же сервер никогда не будет полностью открыт для вашего телефона. Вместо этого каждый обменивается небольшими пакетами данных, делясь только тем, что абсолютно необходимо. Мы можем думать о вышеупомянутой концепции аналогично заказу еды на вынос в вашем любимом ресторане. Вы, клиент, говорите официанту, что бы вы хотели съесть, и они скажут вам, что им нужно взамен, и, в конце концов, вы получите свою еду!
И, наконец, как и любой другой программный продукт, современный API имеет свой собственный жизненный цикл разработки программного обеспечения (SDLC) — от имитации, проектирования и тестирования до создания, управления и вывода из эксплуатации. Эти API хорошо задокументированы как для использования, так и для управления версиями в процессе.
Сегодня API-интерфейсы стали настолько ценными, что составляют большую часть доходов многих компаний. Например, в среднем 35% доходов организаций в настоящее время генерируются API и связанными с ними реализациями. Эти компании вносят свой вклад в рынок тысяч API, иначе называемый экономикой API.
Как API обеспечивают цифровую трансформацию
Компании осуществляют цифровую трансформацию быстрее, чем когда-либо, чтобы не отставать от своих конкурентов и повышать требования клиентов. API помогают им оцифровывать, подключать и внедрять инновации в свои продукты и услуги. API являются ключевым фактором этих усилий. На самом деле, 90% руководителей говорят, что API имеют решающее значение для их бизнеса. Применяя стратегии, основанные на API, они могут стимулировать рост и инновации. Включение API в бизнес-операции может помочь:
- Упрощение и ускорение стратегий выхода на рынок
- Повышение качества обслуживания клиентов
- Повышение операционной гибкости и скорости
- Разработка и использование новых возможностей получения дохода, рынка и каналов сбыта
Чтобы узнать, как разработать стратегию API, которая может улучшить качество обслуживания клиентов или трансформировать ваш бизнес, прочитайте этот технический документ по основам стратегии API.