![Using TRESTRequestDataSetAdapter | Embarcadero RAD Studio Delphi C++Builder Blogs using trestrequestdatasetadapter](https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2022/04/Using-TRESTRequestDataSetAdapter-3819534.png?resize=1140%2C694&ssl=1)
В RAD Studio 11 был представлен TRESTRequestDataSetAdapter — компонент, который может считывать данные из TDataSet и преобразовывать их в формат JSON, готовый для отправки обратно в удаленный RESTful API. Прежде чем я расскажу больше о том, как его использовать, я хочу напомнить, как работают REST URL/API.
REST API и VERBS
REST API обычно создаются для использования различных команд HTML (POST, GET, PUT, PATCH и DELETE) для определения типа запроса, отправляемого к конечной точке.
В качестве примера давайте представим, что вы управляете списком задач в базе данных, которые либо завершены, либо не завершены. Базовый URL-адрес API, такой как «https://<myURL>/data/tasks/», может предоставить конечную точку для вызова для работы с данными TASK, а затем при вызове конечной точки используются разные глаголы для определения типа действия. происходит. (например, выборка данных, вставка, обновление или удаление данных). Чтобы это работало, некоторым глаголам требуется значение идентификатора для идентификации данных, с которыми вы хотите работать (например, какую запись обновлять/удалять?), поэтому в действительности URL-адрес для определенных задач также может принимать необязательное значение идентификатора, например « /данные/задачи/{id}”
Чтобы отправить данные обратно на сервер с помощью TRESTRequestDataSetAdapter, сначала важно сопоставить операцию (вставка, обновление, удаление) с правильным глаголом, а затем использовать TRESTRequest для выполнения с правильно сформированными данными JSON, а также обеспечить конечная точка имеет правильную конечную точку.
Используя это стандартное наименование для URL-адресов (см. выше), а также TRESTRequestDataSetAdapter, можно упаковать JSON с небольшим кодом для отправки данных обратно на сервер. TRESTRequestDataSetAdapter соединяет TRESTRequest и TDataSet. Свойство Area определяет, что выбирается (например, Все или Текущая запись), и преобразует набор данных в содержимое JSON, которое необходимо отправить обратно на сервер.
Чтобы сделать это автоматически, вы можете использовать события в TDataSet, например, AfterInsert, AfterPost и BeforeDelete, чтобы получать изменения в наборе данных, а затем выполнять удаленные вызовы для синхронизации сервера.
ОДНАКО…. что делать, если у вас проблемы с подключением?
Использование Native Development для расширения возможностей приложений REST.
Одной из полезных функций FireDAC (и некоторых других наборов данных, таких как TClientDataSet) является параметр CachedUpdate. Используя CachedUpdates, вы можете отслеживать изменения внутри набора данных. Это позволяет кэшировать изменения, сохранять их локально, а затем возвращать обратно в более поздний момент времени. (отлично, если есть ограниченное подключение).
Эти замечательные функции собственных библиотек можно комбинировать с TRESTRequestDataSetAdapter для сохранения изменений обратно на сервер. Хотя это может усложнить задачу, особенно когда операции вставки, обновления и удаления объединены в одном и том же кэше (поскольку они используют разные ГЛАГОЛЫ для обновления удаленного сервера), можно отфильтровать кэш данных для обработки каждого типа обновления в перемена.
Чтобы показать вам, как это сделать, я создал пример, который доступен через GitHub . Он включает модуль REST.RESTUpdater с классами помощи для управления транспортом и размещением данных всего в нескольких строках кода! – Узнайте больше о примере в этом посте
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition