Настройка ресурсов 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;
Другие вопросы по тегам