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, так что следите за обновлениями и не стесняйтесь делиться с нами своими идеями.


What's Next
Delphi Enter the Digital Fan Art and AI Art Contest
Delphi Fan Art Contest

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

Leave a Reply

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

IN THE ARTICLES