Blog

Luis Majano

March 11, 2016

Spread the word


Share your thoughts

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

Recent Entries

BoxLang 1.0.0 Beta 23 Launched

BoxLang 1.0.0 Beta 23 Launched

The latest release of BoxLang, Beta 23, marks a significant step forward in our journey to create the ultimate dynamic language for the JVM. Packed with powerful new features, important bug fixes, and thoughtful optimizations, this update is designed to make your development experience smoother, faster, and more reliable, especially after now starting to take 100s of comments and bug reports from our community.

Luis Majano
Luis Majano
November 23, 2024
TestBox Latest Updates and News!

TestBox Latest Updates and News!

We’re thrilled to have launched the new TestBox website and TestBox 6.0! If you haven’t had a chance to explore yet, visit TestBox to discover updated documentation, powerful resources, and features that make testing more efficient than ever.

Maria Jose Herrera
Maria Jose Herrera
November 21, 2024
Is Your ColdFusion Application Ready for the Future?

Is Your ColdFusion Application Ready for the Future?

In a rapidly evolving digital world, maintaining performance, security, and scalability for ColdFusion applications is more challenging than ever. Whether you're using Lucee or Adobe ColdFusion, legacy systems can become a bottleneck for growth, innovation, and user satisfaction. The need to future-proof your ColdFusion applications has never been more critical.

But where do you start?


The Hidden Costs of an Outdated ColdFusion Application

As you...

Cristobal Escobar
Cristobal Escobar
November 21, 2024