mormot2 笔记(四) Services的使用

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;

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.
测试中的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框架也会进行绑定。