Rotas

Rotas no ModularBr: como definir e gerenciar suas rotas.

O ModularBr possui um recurso poderoso de gerenciamento de rotas que suporta solicitações utilizando os métodos GET, POST, PUT, DELETE e PATCH, seguindo a arquitetura REST. As rotas são adicionadas aos módulos por meio da construção da classe Route, onde são informados o método, o caminho e o manipulador da rota.

Para exemplificar o uso das rotas no ModularBr, vamos considerar o AppModule e adicionar algumas rotas a ele, e que você esteja usando um framework de requisição como o Horse:

THorse.Get('/nfe/:id',
  procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc)
  begin
     Modular.LoadRouteModule('/nfe/:id');
     try
       // use dos recursos do modulo NFeModule aqui...
       Res.Send('ModularBr' + Modular.Get<TControllerServer>.GetNfe)
          .Status(200)
          .ContentType('application/json');
     finally
       Modular.DisposeRouteModule('/nfe/:id');
     end; 
  end);

app.module.pas

unit app.module;

interface

uses
  dmfbr.module,
  nfe.module, cte.module, nfse.module, nfce.module, mdfe.module;

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

implementation

{ TAppModule }

function TAppModule.Routes: TRoutes;
begin
  // Rotas
  Result := [RouteModule('/nfe/:id', TNFeModule)];
end;

end.

nfe.module.pas

unit nfe.module;

interface

uses
  dmfbr.module,
  nfe.repository, nfe.controller, nfe.provider;

type
  TNFeModule = class(TModule)
  public
    function Routes: TRoutes; override;
  end;

implementation

{ TNFeModule }

function TNFeModule.Binds: TBinds;
begin
  // Injeção de dependência
  Result := [Bind<TRepositoryServer>.SingletonLazy,
             Bind<TControllerServer>.Singleton,
             Bind<TProviderORMBr>.Factory];
end;

function TNFeModule.Routes: TRoutes;
begin
  // Exemple: [RouteModule('/nfe/pdf/:id', TPDFModulo),
  //           RouteModule('/nfe/xml/:id', TXMLModulo)]
  Result := [];
end;

end.

Agora você pode testá-lo em seu navegador ou usando algum programa como Postman:

localhost:9000/nfe/5

localhost:9000/nfe/40

localhost:9000/nfe/100

Last updated