In this entry I will go over how to leverage ColdBox's Modular architecture to RESTFul routing.
In ColdBox, every module's ModuleConfig.cfc
you create has two important facets for building RESTFul services: 1) The this.entryPoint
and the 2) routes
structure in the configure()
method.
If you are creating ColdBox applications using modules, then you will benefit with the capability to nest entry points so they can match to nested sub-modules. Let's say you have the following module structure:
+modules + api + security + data
Then we can create a URL hierarchy to match any sub-module of the api
module by leveraging the EntryPoint
and the routes
configuration.
Parent EntryPoint
The entry point in any module you create will become the pattern
argument to a addModuleRoutes()
call in the ColdBox routing services. This is important as any rules that apply to URL patterns applies to the entry point, e.g. you can use expressions, nesting, etc.
addModuleRoutes( string pattern, string module, [boolean append='true'] )
In the api
module our entry point will simple become:
this.entryPoint = "/api";
This means that any incoming URL that has the /api
prefix will be routed to the API
module.
Parent Routes
The routes
structure in the configure()
method will be used to declare routes for the module you are building. You can declare all routing inline in this structure or actually declare an array of locations of routing CFM templates to load. By default, every module comes with a single route declared:
routes = [ { pattern="/:handler/:action?" } ];
In the parent api
module you can now register the sub-module entry points so if the parent receives a URL request, the module will then re-direct it to the sub-module:
routes = [ { pattern="/security", moduleRouting="security" }, { pattern="/data", moduleRouting="data" } ];
That's it. We have now created sub-module routing by leveraging a URL pattern
argument and the moduleRouting
argument which dictates to what module to re-direct the routing discovery. This will empower you to create very expressive URL entry points in a modular fashion.
Add Your Comment