xtool/contrib/mORMot/SQLite3/Samples/06 - Remote JSON REST Service/Project06Server.dpr

56 lines
1.3 KiB
ObjectPascal

program Project06Server;
{$APPTYPE CONSOLE}
uses
{$I SynDprUses.inc} // use FastMM4 on older Delphi, or set FPC threads
SynCommons,
mORMot,
SysUtils;
type
// TSQLRestServerFullMemory kind of server is light and enough for our purpose
TServiceServer = class(TSQLRestServerFullMemory)
published
procedure Sum(Ctxt: TSQLRestServerURIContext);
end;
{ TServiceServer }
procedure TServiceServer.Sum(Ctxt: TSQLRestServerURIContext);
// begin // the following would be faster to write, a bit slower to execute:
// Ctxt.Results([Ctxt['a']+Ctxt['b']]);
// end;
var a,b: double;
begin
if UrlDecodeNeedParameters(Ctxt.Parameters,'A,B') then begin
while Ctxt.Parameters<>nil do begin
UrlDecodeDouble(Ctxt.Parameters,'A=',a);
UrlDecodeDouble(Ctxt.Parameters,'B=',b,@Ctxt.Parameters);
end;
Ctxt.Results([a+b]);
end else
Ctxt.Error('Missing Parameter');
end;
var
aModel: TSQLModel;
begin
aModel := TSQLModel.Create([],'service');
try
with TServiceServer.Create(aModel) do
try
if ExportServerNamedPipe('RestService') then
writeln('Background server is running.'#10) else
writeln('Error launching the server'#10);
write('Press [Enter] to close the server.');
readln;
finally
Free;
end;
finally
aModel.Free;
end;
end.