Delphi EMS FireDAC: Как передать параметр с клиента на сервер с помощью EMS?

Я работаю над простым клиент-серверным приложением, используя EMS (то есть: для будущего приложения iOS) в Delphi.

На клиентском устройстве у меня есть EMSProvider а также EMSFireDACClient который выбирает данные из базы данных (MSSQL) через источник данных.

На сервере у меня есть FDConnection а также TFDQuery который имеет дело с моей базой данных. Пока все работает нормально.

Вопрос: Теперь мне нужно передать некоторые параметры от клиента к серверу, и он извлекает данные результатов. Как я должен делать, используя EMS? Любые функции или процедуры, доступные в EMS?

Что касается исходного кода, все было обработано соответствующими компонентами. Так что часть кодирования очень мала.

Заранее спасибо.

1 ответ

Решение

Вызов EMS похож на вызов REST. Дальнейшие параметры URL можно передавать как по пути (обрабатывается напрямую) (см. Реализацию по умолчанию получения элементов по идентификатору), так и в виде дополнительных параметров запроса. Это в объекте запроса. Чтобы передать их, используйте пользовательскую конечную точку на клиенте.

Вот еще немного информации:

Объявление сервера:

[ResourceSuffix('{item}')]
procedure GetItem(const AContext: TEndpointContext; const ARequest: TEndpointRequest; const AResponse: TEndpointResponse);

Реализация сервера:

procedure TNotesResource1.GetItem(const AContext: TEndpointContext; const ARequest: TEndpointRequest; const AResponse: TEndpointResponse);
var
  LItem: string;
begin
  LItem := ARequest.Params.Values['item'];
  ...

Конфигурация клиента для конечной точки:

object BackendEndpointGetNote: TBackendEndpoint
  Provider = EMSProvider1
  Auth = BackendAuth1
  Params = <
    item
      Kind = pkURLSEGMENT
      name = 'item'
      Options = [poAutoCreated]
    end>
  Resource = 'Notes'
  ResourceSuffix = '{item}'
end

Клиентский звонок:

  BackendEndpointGetNote.Params.Items[0].Value := AID;
  BackendEndpointGetNote.Execute;

Надеюсь это поможет.

Другие вопросы по тегам