/// this server will use TSQLRestServerFullMemory over HTTP program Project14ServerHttp; {$APPTYPE CONSOLE} {$ifdef Linux} {$ifdef FPC_CROSSCOMPILING} {$linklib libc_nonshared.a} {$endif} {$endif} {$I Synopse.inc} uses {$I SynDprUses.inc} // use FastMM4 on older Delphi, or set FPC threads SysUtils, Classes, SynCommons, SynLog, mORMot, mORMotHttpServer, Project14Interface in 'Project14Interface.pas'; type TServiceCalculator = class(TInterfacedObject, ICalculator) public function Add(n1,n2: integer): integer; end; function TServiceCalculator.Add(n1, n2: integer): integer; begin result := n1+n2; end; var aModel: TSQLModel; aServer: TSQLRestServer; aHTTPServer: TSQLHttpServer; begin // define the log level with TSQLLog.Family do begin PerThreadLog := ptIdentifiedInOnFile; Level := LOG_VERBOSE; EchoToConsole := LOG_VERBOSE; // log all events to the console end; // create a Data Model aModel := TSQLModel.Create([],ROOT_NAME); try // initialize a TObjectList-based database engine aServer := TSQLRestServerFullMemory.Create(aModel,'test.json',false,true); try // register our ICalculator service on the server side aServer.ServiceDefine(TServiceCalculator,[ICalculator],sicShared); // launch the HTTP server aHTTPServer := TSQLHttpServer.Create(PORT_NAME,[aServer],'+' {$ifndef ONLYUSEHTTPSOCKET},useHttpApiRegisteringURI{$endif}); try aHTTPServer.AccessControlAllowOrigin := '*'; // for AJAX requests to work writeln(#10'Background server is running.'#10); writeln('Press [Enter] to close the server.'#10); readln; finally aHTTPServer.Free; end; finally aServer.Free; end; finally aModel.Free; end; end.