mormot2 笔记(四) Services的使用

发布时间 2023-08-27 13:49:47作者: jjw
constructor TMyRestServer.Create(Port: Word);
begin
  inherited Create;

  FRestServerDB := TRestServerDB.Create(TOrmModelFactory.ModelInstance, SQLITE_MEMORY_DATABASE_NAME);
  FRestServerDB.DB.Synchronous := smOff;
  FRestServerDB.DB.LockingMode := lmExclusive;
  FRestServerDB.CreateMissingTables;

  FRestServerDB.ServiceDefine(TTest, [ITest], sicShared);

  FHttpServer := TRestHttpServer.Create(RawUtf8(Port.ToString), [FRestServerDB], '+', HTTP_DEFAULT_MODE, 4 );
  FHttpServer.AccessControlAllowOrigin := '*';
end;
View Code
type

  TTest = class(TInterfacedObject, ITest)
    function GetTime: TDateTime;
    function Add(a, b: Integer): Integer;
  end;

implementation

uses
  mormot.core.interfaces;

{ TTest }

function TTest.Add(a, b: Integer): Integer;
begin
  result := a+b;
end;

function TTest.GetTime: TDateTime;
begin
  Result := Now;
end;

initialization

  TInterfaceFactory.RegisterInterfaces([TypeInfo(ITest)]);

end.
View Code

测试中的OrmModel中是不与真实的数据库关联。

在调用时,mormot框架对不同调用方式(get,post)进行了相应的处理,即

get  baseUrl/Test/Add?a=1&b=2 与 post baseUrl/Test.Add  (body为 {a: 1, b: 2} )都是可行的。

另外,Test.add(ormValue: TOrmXXX) mormot框架也会进行绑定。