0
I’m sent my object JSON
via POST
using the ExtJS 6.01
.
my application server was done in morMot
in the Delphi Seattle
.
Sending in mode GET
I usually take the parameters that come by url
.
But sending via POST
my object is placed in Request PayLoad
how to retrieve this data sent via POST
, using the morMot framework
?
unit UnitJson;
interface
uses
SynCommons, mORMot, mORMotHttpServer,mORMotReport, mORMotHttpClient,SynCrtSock,
System.SysUtils,Vcl.Forms, Winapi.Windows, System.Classes,DB,Contnrs,XSBuiltIns,System.StrUtils;
Type
TMyService = class(TSQLRestServerFullMemory)
published
procedure myapp(Ctxt: TSQLRestServerURIContext);
end;
TMyHTTPServer = class(TSQLHttpServer)
private
oModel: TSQLModel;
oSQLRestServerFullMemory: TMyService;
public
Model : TSQLModel;
function ServiceRegister(AImplementationClass: TInterfacedClass; const AInterfaces: PTypeInfo;const AContractExpected: RawUTF8): boolean;
constructor Create(const APorta: RawUTF8; AThreadPoolCount: Integer); reintroduce;
destructor Destroy; override;
end;
TServiceCustomAnswer = record
Header: RawUTF8;
Content: RawUTF8;
end;
type
TExtjsVO = class
private
fsuccess : boolean;
frows : TList;
ftotal : integer;
published
property success : boolean read Fsuccess write Fsuccess;
property rows : TList read Frows write Frows;
property total : integer read Ftotal write Ftotal;
end;
// Class Return
IMyInterface = interface(IInvokable)
['{E6C6ADFD-5977-4759-B400-AA4140F1D683}']
function PostItem(params:RawUTF8):RawJSON;
end;
TMyClassDirect = class(TInterfacedObject, IMyInterface)
public
function PostItem(params:RawUTF8):RawJSON;
end;
implementation
uses UnitServer;
{ TMyService }
procedure TMyService.myapp(Ctxt: TSQLRestServerURIContext);
var
sFileName: TFileName;
begin
sFileName := Ctxt.ResourceFileName;
if sFileName = '' then
Ctxt.Redirect('myapp/index.html')
else
Ctxt.ReturnFile(ExtractFilePath(Application.ExeName) + sFileName, true);
end;
{ TMyHTTPServer }
constructor TMyHTTPServer.Create(const APorta: RawUTF8; AThreadPoolCount: Integer);
begin
oModel := TSQLModel.Create([], 'app');
oSQLRestServerFullMemory := TMyService.Create(oModel, '', false, false);
inherited Create(APorta, [oSQLRestServerFullMemory], '+', useHttpApiRegisteringURI, AThreadPoolCount);
end;
function TMyHTTPServer.ServiceRegister(AImplementationClass: TInterfacedClass; const AInterfaces: PTypeInfo; const AContractExpected: RawUTF8): boolean;
begin
oSQLRestServerFullMemory.ServiceRegister(AImplementationClass,[AInterfaces], sicSingle).ContractExpected := AContractExpected;
Result := true;
end;
destructor TMyHTTPServer.Destroy;
begin
FreeAndNil(oModel);
FreeAndNil(oSQLRestServerFullMemory);
inherited;
end;
{ TMyClassDirect }
function TMyClassDirect.PostItem(params:RawUTF8): RawJSON;
begin
// nao consigo pegar os dados via POST aqui..
Result := params;
end;
end.