Blog

Gavin Pickin

March 04, 2016

Spread the word


Share your thoughts

If you work alone, using a BaseHandler that might not seem like a big win, but when working with a team, uniformity is your friend. Even when working alone, one of the hardest things in programming is naming conventions, it’s been great using a set of conventions, especially since the base handler takes care of all the boiler plate you would normally write yourself.

Luis Majano went into more detail in yesterday’s article about what the BaseHandler gives you, which you can read here on REST2016 ColdBox REST Template. Lets look about how you can get it installed into your existing app.

Installation

Git Repo: https://github.com/Ortus-Solutions/cbox-cbrestbasehandler
You can simply drop it into the modules folder, or the easiest way, using CommandBox, you can install the module with one simple command.

1
box install cbrestbasehandler

With the module installed, all you have to do to add the base handler functionality to your handler is extend it... using the mapping automatically create for your by the module itself.

1
2
3
component extends="cbrestbasehandler.handlers.BaseHandler” {
    ...
}

Once that is done, the BaseHandler will intercept requests via the aroundHandler() method, giving you a uniform response to your rest calls.

So how do you use it?

As Luis mentioned in the last blog post, the BaseHandler creates a Response object, and puts it in the prc scope for you. Since Accessors are set to true, you can get and set values as needed. To simple setData, you can have a simple function like the index below.

1
2
3
any function index( event, rc, prc ){
    prc.response.setData( "Welcome to my ColdBox RESTFul Service" );
}

 

Of course, not every call is successful, how do I return an error, or set a statusCode? With the responseObject, you can just set the given attributes, shown below, and the BaseHandler will take care of the implementation, so you do not have to add all of that boiler plate yourself.

1
2
3
4
5
6
7
8
any function index( event, rc, prc ){
    prc.response
    .setError( true )
    .setErrorCode( 500 )
    .addMessage( "General application error: I broke it" )
    .setStatusCode( 500 )
    .setStatusText( "General application error" );
}


Base Handler wrapping everything?

Its great to have a uniform response, but what if you want to have some methods not use the BaseHandler aroundHandler() interceptor? Inside the handler, you can add a line of code, to exclude given events. If you would like to exclude receipt() and printHeader() functions, then you would add a line like the following.

1
this.aroundHandler_except     = “receipt,printHeader”;

Remember this month is a ROADSHOW all about REST. We have weekly webinars, don't miss out on all the great content.
Lets build some REST together.

Add Your Comment

Recent Entries

Into the Box 2025 Virtual Tickets Are Now LIVE!

Into the Box 2025 Virtual Tickets Are Now LIVE!

The wait is over! By popular demand, Into the Box 2025 virtual tickets are officially available! Secure your spot today and take advantage of our exclusive early bird pricing before it’s gone!

We’re bringing the community together to push the boundaries of modern development—because change starts with us. We’ve taken the first step, now it’s your turn to evolve and take action!

Maria Jose Herrera
Maria Jose Herrera
April 03, 2025
BoxLang 1.0.0 RC3 Has Landed!

BoxLang 1.0.0 RC3 Has Landed!

We are thrilled to announce the release of BoxLang 1.0.0-RC.3, marking a significant milestone in the development of our dynamic JVM language. This release brings a major performance boost and over 100 bug fixes and improvements, making it our most robust release to date. We are now entering the final stretch towards our full release on May 1st, and we need your help to ensure everything is in perfect shape. Please test your applications and report any issues.

Luis Majano
Luis Majano
April 03, 2025
Nearshoring for ColdFusion: Is this a good option for you and your organization?

Nearshoring for ColdFusion: Is this a good option for you and your organization?

Many companies face significant challenges when outsourcing ColdFusion development. Issues such as time zone mismatches, communication barriers, and cultural misalignment often result in project delays, inefficient collaboration, and unexpected costs. However, Nearshoring presents a strategic alternative that connects companies with highly skilled ColdFusion developers operating within your time zone, ensuring real-time collaboration, faster issue res...

Cristobal Escobar
Cristobal Escobar
April 02, 2025