Manuseadores de Rotas

Com o ModularBr, as rotas da sua API podem ser definidas de forma clara e organizada, utilizando o recurso de RouteHandlers. Com ele, é possível dividir as implementações em classes separadas que herdam da classe TRouteHandler, onde cada classe é responsável por definir as rotas correspondentes e seus handlers. Em seguida, a lista de classes que definem as rotas é registrada em um único lugar - o método RouteHandlers do módulo AppModule - tornando o desenvolvimento e a manutenção mais fácil e eficiente.

Ao utilizar o RouteHandlers, o código fica mais modular e fácil de entender, permitindo que você encontre rapidamente as implementações para cada rota. Isso significa que você pode ter uma estrutura mais organizada para lidar com as rotas da sua aplicação, tornando mais fácil a manutenção e a adição de novas funcionalidades. Com o ModularBr, você tem um recurso poderoso que ajuda a tornar a sua API mais eficiente, organizada e fácil de gerenciar.

Exemplo de uso com Horse:

Criando a RouteHandler para busca de PDF:

unit pdf.route.handler;
...
type
  TPDFRouteHandler = class(TRouteHandler)
  protected
    procedure RegisterRoutes; override;
  public
    procedure NFePDF(Req: THorseRequest; Res: THorseResponse);
    procedure NFeCancelamentoPDF(Req: THorseRequest; Res: THorseResponse);
    procedure NFeInutilizacaoPDF(Req: THorseRequest; Res: THorseResponse);
    procedure NFeCartaCorrecaoPDF(Req: THorseRequest; Res: THorseResponse);
  end;

implementation
...
{ TPDFRouteHandler }
procedure TPDFRouteHandler.RegisterRoutes;
begin
  inherited;
  THorse.Get(Rota.NFePDF, NFePDF);
  THorse.Get(Rota.NFeCancelamentoPDF, NFeCancelamentoPDF);
  THorse.Get(Rota.NFeInutilizacaoPDF, NFeInutilizacaoPDF);
  THorse.Get(Rota.NFeCartaCorrecaoPDF, NFeCartaCorrecaoPDF);
end;
...

Registrando TPDFHouteHandler no AppModule:

...
type
  TAppModule = class(TModule)
  public
    function Routes: TRoutes; override;
    function RouteHandlers: TRouteHandlers; override;
  end;

implementation
...
function TAppModule.RouteHandlers: TRouteHandlers;
begin
  Result := [TPDFRouteHandler];
end;

function TAppModule.Routes: TRoutes;
begin
  Result := [RouteModule(Rota.Empresa, TEmpresaModule),
             RouteModule(Rota.NFe, TNFeModule)];
end;
...

Iniciando o Modular e o AppModule:

procedure TFormServer.StartRoutes;
begin
  ReportMemoryLeaksOnShutdown := True;
  // Registrando ao AppModule/Guardião de Rotas
  THorse.Use(HorseModular(TAppModule.Create));
  // Colocar servidor no ar.
  StartServer;
end;

procedure TFormServer.StartServer;
begin
  THorse.Listen(9000);
end;

Last updated