Настройка ресурсов REST в mORMot
Я хочу настроить довольно простой доступ к моему ресурсу REST на основе информации ( http://synopse.info/forum/viewtopic.php?id=1833) относительно маршрутизации REST в mORMot.
Мне нужно назвать URL как localhost/api/apservice/station/1
, но код ниже работает только для вызова как localhost/api/apservice/station?stationid={stationid}
IAPIService = interface(IInvokable)
['{0F23D411-C3F0-451A-8580-AB5BE6E521E6}']
function Station(StationID: Integer; out Station: TSQLStation): TCQRSResult;
end;
TAPIService = class(TInterfacedObject, IAPIService)
private
fDbConnection : TSQLDBConnectionProperties;
public
constructor Create(const aProps: TSQLDBConnectionProperties ); overload;
public
function Station(StationID: Integer; out Station: TSQLStation): TCQRSResult;
end;
Посоветуйте, пожалуйста, как правильно настроить REST-маршрутизацию на мои ресурсы? Мне нужны примеры для:
- localhost / api / apservice / station / 1 -
return details for station=1
- localhost / api / apservice / station / groups -
return all groups from station
- LOCALHOST / API / apservice / клиентов / {aCustomerId}/ отчеты / заказы / {aOrderNumber}/ подробности?Filter={aDetailFilter}"
1 ответ
Вы можете просто определить свой собственный класс маршрутизации.
Смотрите документацию по фреймворку о пользовательской маршрутизации
Переопределите два соответствующих метода:
TSQLRestServerURIContext = class
protected
...
/// retrieve interface-based SOA
procedure URIDecodeSOAByInterface; virtual; abstract;
/// direct launch of an interface-based service
procedure ExecuteSOAByInterface; virtual; abstract;
Или определите основанный на методе сервис, который позволяет любую маршрутизацию, которую вы можете определить:
type
TMyRestServer = class(TSQLRestServerFullMemory)
(...)
published
procedure apservice(Ctxt: TSQLRestServerURIContext);
end;