delphimvcframework/samples/prometheus/articles_crud_server_prometheus/WebModuleUnit1.pas

52 lines
1.3 KiB
ObjectPascal

unit WebModuleUnit1;
interface
uses System.SysUtils, System.Classes, Web.HTTPApp, mvcframework;
type
TWebModule1 = class(TWebModule)
procedure WebModuleCreate(Sender: TObject);
private
FEngine: TMVCEngine;
public
{ Public declarations }
end;
var
WebModuleClass: TComponentClass = TWebModule1;
implementation
{ %CLASSGROUP 'Vcl.Controls.TControl' }
uses Controllers.Articles, mvcframework.Middleware.CORS, mvcframework.Middleware.Compression,
Controllers.Base, MVCFramework.Commons, MVCFramework.Middleware.Prometheus,
UtilsU;
{$R *.dfm}
procedure TWebModule1.WebModuleCreate(Sender: TObject);
begin
FEngine := TMVCEngine.Create(self,
procedure(Config: TMVCConfig)
begin
//Enabling the following line, the API will start to respond from "/api/v1"
//So "/articles/1" becomes "/api/v1/articles/1"
//Config[TMVCConfigKey.PathPrefix] := '/api/v1';
end);
FEngine.AddController(TArticlesController);
{$IFDEF TESTINSTANCE}
FEngine.AddController(TPrivateController);
{$ENDIF}
FEngine.AddMiddleware(TMVCPrometheusMiddleware.Create('/metrics',
procedure
begin
Metrics.SetGaugeValue('memory_allocated_total', GetMemoryUsed);
end));
FEngine.AddMiddleware(TCORSMiddleware.Create);
FEngine.AddMiddleware(TMVCCompressionMiddleware.Create(256));
end;
end.