Have an amazing solution built in RAD Studio? Let us know. Looking for discounts? Visit our Special Offers page!
Новости

Демонстрация Delphi с WeatherStack от APILayer

rad studio delphi ide c builder

Недавно я делал презентацию об использовании облачных и REST API от Delphi на итальянской конференции Delphi Day в конце июня. Среди различных демонстраций я провел несколько экспериментов с использованием API APILayer REST. Если вы не знаете, APILayer — это компания, входящая в Idera, как и Embarcadero.


Почему API REST

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

Современные онлайн-сервисы и API-интерфейсы REST часто предлагают аналогичные возможности, активируемые путем передачи правильных параметров с HTTP-вызовом на сервер и получения обратно результата. Примеры включают преобразование изображения, создание PDF-файла, преобразование текста в речь или чтение текста, встроенного в изображение.

Почему вы используете один подход вместо другого? Бывают случаи, когда реалистичен только один из вариантов (для быстрого графического рендеринга требуется установленная графическая библиотека, в то время как возможности ИИ обычно доступны в Интернете), но в других сценариях возможны оба подхода.

Использование локальной библиотеки имеет следующие преимущества:

  • Как правило, более быстрое выполнение
  • Нет необходимости в подключении к Интернету
  • Возможно, возможность тонкой настройки и настройки функции и ее лучшей привязки к коду и пользовательскому интерфейсу.
  • На уровне безопасности вам не нужно беспокоиться о шифровании связи, чтобы никто не мог получить доступ к данным приложения при передаче.

Использование REST API имеет следующие преимущества:

  • Сохранение приложения меньшего размера, поскольку вам не нужно распространять дополнительный код библиотеки
  • Всегда используйте последнюю версию библиотеки, так как ее можно обновлять отдельно от клиентского приложения.
  • На уровне безопасности вам не нужно беспокоиться об обновлении библиотеки в случае обнаружения какой-либо проблемы, необходимости развертывания новой версии приложения.

Наконец,  часто существует разница между стоимостью библиотеки и REST API:

  • Если библиотека не является бесплатной и с открытым исходным кодом, она, как правило, имеет первоначальную фиксированную стоимость для каждого разработчика.
  • Большинство REST API имеют модель оплаты по мере использования, часто с бесплатным уровнем, который вы можете использовать для разработки и тестирования.
  • Таким образом, REST API может быть дешевле для ограниченного использования, но становится дороже для широкого использования.

Представляем APILayer

APILayer — это бизнес Idera, ориентированный на предложение размещенных API и создание торговой площадки API, на которой также размещаются сторонние API. Вы можете узнать больше о многих доступных услугах на  https://apilayer.com/

Существует множество мощных API-интерфейсов как часть APILayer, и хотя некоторые из них имеют больше смысла в веб-приложении (например, IpStack), многие другие прекрасно подходят и для клиентского приложения, например службы обработки файлов, предлагаемые FileStack ( https://www. .filestack.com/ ) или отличный сторонний API проверки электронной почты ( https://apilayer.com/marketplace/email_verification-api ).

В приведенной ниже демонстрации я сосредоточусь на простом API, возможно, не самом мощном: WeatherStack, который, как следует из названия, может предоставлять текущие, исторические и прогнозные данные о погоде:

https://weatherstack.com/

Использование отладчика REST RAD Studio

После того, как вы определили REST API, который планируете использовать, самый простой способ приступить к разработке клиентского приложения — использовать отладчик REST, доступный как часть установки RAD Studio (и доступный из меню «Инструменты»), а также в виде отдельной бесплатной загрузки. для всех ( https://www.embarcadero.com/free-tools/rest-debugger ).

Отладчик предлагает возможность настроить REST API, сохранить эту конфигурацию для будущего использования (или поделиться ею с другим разработчиком) и импортировать конфигурацию в приложение Delphi или C++Builder.

В простом случае, таком как WeatherStack, после запуска отладчика REST сначала необходимо настроить основную конечную точку:

apilayer_01-5661070

Затем вам нужно установить правильную конфигурацию параметров, включая конкретную конечную точку (текущую), параметр запроса и информацию аутентификации access_key:

apilayer_02-4335087

Параметры зависят от конечной точки и перечислены в документации по API. На этом этапе вы можете использовать кнопку SendRequest, чтобы попробовать API и проверить ответ в нижней части пользовательского интерфейса отладчика REST:

apilayer_03-3656655

Результирующая структура данных относительно сложна, но мы можем отфильтровать некоторые из вложенных таблиц (например, расположение, показанное выше) в структуре таблицы. Учитывая, что мы, вероятно, ищем текущие данные, мы можем использовать этот корневой элемент JSON для получения данных в структуре таблицы:

apilayer_04-4024551

Создание реальной демонстрации в Delphi

Когда вы довольны конфигурацией и данными A (возможно, включая данные таблицы), вы можете использовать кнопку «Копировать компонент» отладчика REST, чтобы упростить разработку приложения. Эта кнопка, по сути, фиксирует конфигурацию компонентов клиентской библиотеки REST и позволяет вставить ее в форму или модуль данных в RAD Studio IDE.

В этом случае я просто создал простое приложение FireMonkey с помощью Delphi, добавил модуль данных и вставил в него конфигурацию компонентов. В результате получается следующий модуль данных:

apilayer_05-5797490

Фактическая конфигурация компонентов следующая:

Как вы видите, компонент RESTClient имеет общую конфигурацию сайта, RESTRequest относится к конечной точке и ее параметрам, необязательный компонент RESTResponse содержит результаты и может передавать их через компонент RESTResponseDataSetAdapter в таблицу в памяти, FDMemTable составная часть.

На этом этапе вам нужна в основной форме кнопка для вызова и поле редактирования с местоположением и компонентом отображения (я использовал поле редактирования только для чтения). В обработчике события OnClick кнопки вы можете написать следующий код:

В качестве альтернативы вы можете связать ввод и вывод через Visual LiveBindings, подключив редактирование ввода к параметрам запроса, а конкретное поле таблицы в памяти к элементу управления выводом. Чтобы сделать это, вам сначала нужно выполнить HTTP-запрос во время разработки с помощью специальной команды компонента RESTRequest. Это заполняет метаданные компонентов, включая таблицу в памяти. После этого вы можете связать ввод и вывод в дизайнере LiveBindings и разместить код, выполняемый при нажатии кнопки, на:

Это конфигурация конструктора LiveBindings:

apilayer_06-5228925

И, наконец, это приложение во время выполнения в этот жаркий летний день:

apilayer_07-6389876

Вывод

Как вы видели, реализация клиента для REST API в Delphi относительно проста (  здесь я уже демонстрировал то же самое ранее, рассматривая другой API ). Теперь в случае приложения погоды не так много альтернатив по сравнению с доступом к оперативным данным из веб-службы, в то время как в других сценариях использование API было бы альтернативой по сравнению с внедрением той же функции в библиотечную часть приложения.

Мы планируем продемонстрировать еще несколько API-интерфейсов APILayer в блоге Embarcadero, так что следите за обновлениями и не стесняйтесь делиться с нами своими идеями.

See What's New in 12.2 Athens See What's New in 12.2 Athens Dev Days of Summer 2-24

Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Start Free Trial   Upgrade Today

   Free Delphi Community Edition   Free C++Builder Community Edition

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

IN THE ARTICLES