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;
Надеюсь это поможет.