Многие слышали об API, а также REST. В данной статье будет рассказано о том, что это за элементы, а также каковы принципы их использования на практике. Предложенная информация окажется одинаково полезной и новичкам, и продвинутым разработчикам.
API – понятие
API – это Application Programming Interface. Технология, описывающая метод, который программное обеспечение предоставляет внешним пользователям для коммуникации с оным. Чаще всего – путем подключения к интернету.
API может выступать взаимодействием с сервером утилиты на телефоне, между ноутбуками или иными устройствами. Это – пользовательский интерфейс. Он включает в себя:
- функции;
- структуры;
- методы;
- классы.
Все это способствует грамотному взаимодействию одного ПО с другим. API предусматривает «мостики», которые дают возможность программе 1 получить доступ к данным программы Б или к определенному функционалу.
Простыми словами, это – «договор», который предоставляется задействованным контентом. Звучит как «Ко мне можно обратиться так и вот так, я в таком случае начну выполнять то и это».
О наборе функций
Во время работы приложения с пользовательским интерфейсом нужно учитывать его возможности. Оный отвечает на вопрос «Каким образом можно обратиться ко мне и моей системе?». Предусматривает:
- операции, которые можно обработать и осуществить;
- данные, поступаемые на вход;
- данные, которые отображаются на выходе софта.
Если представить пользовательский интерфейс в более простой форме для разработчика, то он будет напоминать описание функции: на входе есть данные, на выходе – тоже. При помощи кодификации происходит преобразование одного в другое.
Согласно установленному определению, API представлен набором функций. Их может быть одна или несколько.
Принцип составления
Каждый программер будет проводить группировку функций в зависимости от того, какой результат он хочет получить. Пример – по функционалу. Тогда потребуется:
- интерфейс входа в систему – там осуществляется регистрация и авторизация;
- интерфейс пользовательского характер для отчетностей – разные функции будут предусматривать разного рода формулы;
- API платежных данных – для работы с банковскими организациями предназначается отдельная возможность.
Иногда создавать целую группу пользовательских интерфейсов нет никакой необходимости. Разработчик в праве сделать один общий API или дополнить его «под заказ».
Причем тут интерфейс
Рассматриваемая технология – это термин, который широко применяется в объектно-ориентированном программировании. При коддинге контракт – это и есть API. Он предусматривает следующие концепции:
- инкапсуляция;
- наследование;
- полиморфизм.
При помощи инкапсуляции происходит раскрытие реализации. Для пользователя весь процесс будет предельно простым: нужно нажать на кнопку, чтобы получить отчет. Внутреннее устройство соответствующей «технологии» не играет роли для среднестатистического юзера. Программа просто предоставляет человеку интерфейс, посредством которого он сможет использовать предусматриваемый системой/программером функционал.
Чаще всего клиенты работают с GUI. Это – графический пользовательский интерфейс. Приложения будут контактировать непосредственно с API. Красивая «оболочка» в виде оформления им не требуется.
О вызовах
Данные в утилите удается вбить, откорректировать, вывести и просмотреть через специальный interface. Для ПО нужен API. Он может быть вызван разными способами:
- система осуществляет вызов функции в пределах себя;
- происходит операция, которая вызывает метод другой системы;
- человек реализовывает задачу самостоятельно;
- манипуляцией занимаются автотесты.
Каждый вариант предусматривает передачу данных через тот или иной функционал. Далее каждый подход будет рассмотрен более внимательно.
Функция внутри утилиты
Части программы представляют собой элементы взаимодействующих друг с другом компонентов. Происходит это посредством программного уровня – на API.
Такой вариант является самым простым. Связано это с тем, что автором interface выступает разработчик. Он же – непосредственная целевая аудитория и потребитель. С неактуальной документацией и устаревшими данными такой пользователь не столкнется.
Для того, чтобы свести к минимуму заминки приема, нужно внимательно изучать комментарии, которые содержит код. Они укажут на принципы функционирования API.
Из другой системы
В пределах одного устройства всегда происходит взаимодействие приложений друг с другом на аппаратном уровне. Вызов interface из другой системы – распространенный прием, который тестируется в интеграторах.
Здесь система будет через API извлекать данные из другого программного обеспечения. Можно как получать информацию, так и передавать ее.
Выглядит это так:
- пользователь вводит букву на сайте;
- страница отправляет запрос в подсказки по API;
- соответствующие «указатели» возвращают ответ;
- сайт обрабатывает полученный контент и выводит результат клиенту.
Так будет с каждым отдельным символом. Стоит учесть, что «подсказки» в приведенном примере представлены отдельным документом (системой).
Вызов человеком
Причины, по которым применяется данная метода, могут быть разными:
- ускорение работы;
- необходимость делать исправления и корректировки багов;
- проверка логики без фронтовых докруток.
Обычно при наличии рассматриваемой «архитектуры» проще воспользоваться ей, чем GUI. Если обнаружен баг, нужно просто убрать из кода все лишнее, вызвать метод без graphic interface, а затем протестировать логику утилиты.
Автотестинг в помощь
Вот типичная пирамида автоматизации:
- GUI-тестинг – направлен на проверку непосредственными пользователями;
- API-тест – планомерное опускание вниз с уборкой «всего лишнего»;
- Unit-тестинг – проверки на отдельные функции, возможности.
В первом случае робот будет делать то, что реализовывал бы обычный пользователь. Пример – открывает браузер, нажимает на кнопки. Но, если подобная проверка провалилась, придется долго искать, в каком именно месте.
Второй вариант – те же самые манипуляции, но без браузера. Берутся данные на вход, проверяются на выходе. Пример – тестинг грамотности и правильности заполнения данных в Excel.
Юнит-тестирование позволяет посмотреть, как работает каждая функция отдельно друг от друга. С их помощью обнаруженные баги легко подкорректировать, потому что становится ясно, что именно и в каком месте «отказало».
Косвенный вызов
Предыдущие варианты – это прямое обращение к адресам и информации. Вызвать API-интерфейс удается косвенно. Пример – через GIU. Здесь происходит следующее:
- Клиент открывает систему и пытается загрузить отчет.
- Соответствующая проблема решается путем клика на определенную кнопку.
- Когда юзер кликает по соответствующему элементу управления, происходит формирование и отправка запроса на сервер.
- Сервер получат команду, обрабатывает ее.
- Происходит формирование отчета (ответа) с его непосредственной выдачей в качестве результата.
Так клиент может пользоваться разработками API, даже не подозревая об этом.
Тестирование
Тестирование API – это проверка, которая осуществляется через рассматриваемую архитектуру. Подобный термин выступает в качестве общеупотребимого, но не совсем корректного с технической точки зрения.
Связано это с тем, что при реализации подобной проверки будет анализироваться конкретная функциональность через программный или графический interface. Термин целесообразно применять, говоря об:
- автотестах на уровне программного интерфейса;
- интеграции между несколькими системами.
Интеграция – это когда одна система обращается к другой по протоколу передачи данных. Носит название Remote API. Общение осуществляется по некому протоколу посредством интернета. Есть еще LocalAPI – когда приложение обращается само к себе или к другому ПО в пределах одной виртуальной памяти.
Endpoint – это…
При проверке любого обеспечения, работающего с сетью, должно быть представление об endpoint. Это – название адреса, который будет принимать сообщения от клиента. Обычно представлен URL и портом. Если хочется создать веб-сервис на порту 8080 Endpoint, он будет иметь следующий вид:
Если у сервиса несколько интерфейсов, предстоит при обращении к оному указать точный Endpoint каждый раз при смене оных.
В качестве эндпоинта может восприниматься определенный роутер или компьютер – конечное устройство. Это понятие выходит за пределы Restful. Endpoint может использоваться в SOAP и иных протоколах.
REST – что это
REST – передача состояния представления. Представляет архитектурный стиль взаимодействия элементов распределенной системы в пределах компьютерной сети. Отвечает за определение принципа обмена данными между различными компонентами системы, каждая из которых физически способна располагаться в разных местах в физическом плане.
Это – согласованный набор ограничений, принимаемых во внимание при проектировании распределенных систем. Эти «рамки» носят название принципов REST. Приложения, которые соблюдают оные – Restful.
Для того, чтобы разобраться с архитектурой, необходимо знать:
- основы работы в формате JSON;
- HTML;
- HTTP;
- URL;
- внедрение зависимостей.
Все это пригодится при создании нового приложения, контактирующего с клиентами и серверами.
Принципы REST
Всего их шесть:
- Приход к модели клиент-сервер. Здесь заложены ограничения потребностей. Нужно четко отделять клиентский интерфейс от серверных «интересов», отвечающих за хранение данных. Принцип помогает повысить переносимость кодификации на другие платформы, а также улучшить масштабируемость системы.
- Отсутствие состояния. Между запросами серверу не нужно хранить данные о состоянии клиента. Обратное правило тоже действует. Запросы со стороны «пользователя» формируются так, чтобы server мог получить необходимые данные для обработки запроса. Это помогает «не читать между строк» составленной утилите.
- Кэширование. Ответы серверного типа должны быть явными или неявными. Это поможет юзеру не получать устаревшие и неверные сведения. Способствует улучшению производительности.
- Единообразие интерфейса. Фундаментальный принцип. У архитектуры должен быть единообразный interface. Клиент должен всегда понимать, какие адреса и в каком форме будут получать запрос. Сервер – разбираться в форматах, выдаваемых в качестве ответов.
- Слои. Подразумевается иерархия сетевых структур. Иногда client может обратиться к серверу напрямую, иногда – через промежуточный узел. Расслаивание системы устранит проблему загрузку servers.
- Код по требованию. Не является обязательным «критерием». Подразумевает, что client сможет расширить функциональность за счет загрузки кодов с серверов под видом апплетов и сценариев.
Все это должен помнить разработчик веб-утилит и браузеров.
Примеры запросов
А вот так могут выглядеть клиентские запросы:
Ответы на аппаратном уровне включают в себя:
- код ответа;
- заголовок;
- тело.
Внешне ответ от запроса почти не отличается. Информация нередко возвращается в формате JSON. Пример – на GET-запросы.
Что поможет лучше понять API
Лучше разобраться в серверах, REST, а также API и GUI помогут специализированные дистанционные компьютерные онлайн курсы. Они позволяют:
- учиться в удобное время;
- быстро вникать «с нуля» в программирование и IT-сферу;
- получать бесценную практику;
- знакомиться с опытными кураторами-разработчиками;
- осваивать сразу несколько направлений в сжатые сроки – до 12 месяцев.
По окончании курсов выдается сертификат установленного образца, подтверждающий навыки в выбранном направлении.
Хотите узнать больше об архитектуре ПО? Обратите внимание на подборку курсов по IT-инфраструктуре в Otus!