🇺🇸
ModularBr Framework for Delphi
Portugues(PT)TelegramGitHub
  • Welcome to ModularBr
  • Getting to know
    • Introduction
      • Benefits
      • Requirements
      • Installing
  • Module
    • Exporting Binds
    • Importing Binds
  • Routes
    • Route Guard
    • Middlewares
  • Pipes
  • Dependency injection
  • Route Handlers
  • Usability
    • Horse and ModularBr
    • Desktop and ModularBr
  • CLI
  • Frequently Asked Questions
    • FAQs
      • How to contribute?
      • How to download and install?
      • What is InjectorBr?
      • What is ResultPairBr?
      • What is ECLBr?
  • Usage policy
    • License
Powered by GitBook
On this page

Routes

Routes in ModularBr: how to define and manage your routes.

The ModularBr features a powerful route management capability that supports requests using the GET, POST, PUT, DELETE, and PATCH methods, following the REST architecture. Routes are added to modules through the construction of the Route class, where the method, path, and route handler are specified.

To illustrate the use of routes in ModularBr, let's consider the AppModule and add some routes to it, assuming you are using a request framework like Horse.

THorse.Get('/nfe/:id',
  procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc)
  begin
     Modular.LoadRouteModule('/nfe/:id');
     try
       // Make use of the features of the NFeModule module here...
       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
  // Routes
  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
  // Dependency injection
  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.

Now you can test it in your browser or using a program like Postman.

localhost:9000/nfe/5

localhost:9000/nfe/40

localhost:9000/nfe/100

PreviousImporting BindsNextRoute Guard

Last updated 2 years ago