Blog

Securing RESTFul endpoints with ColdBox 4

Luis Majano February 03, 2015

Spread the word

Luis Majano

February 03, 2015

Spread the word


Share your thoughts

ColdBox has sported RESTFul capabilities since the 3.0.0 days (that's since 2011).  As each release matures, our RESTFul suite of tools mature as well.  In our latest release we introduced a great way to intercept when RESTFul endpoints are called with invalid HTTP methods.  Every ColdBox handler has the this.allowedMethods structure which can tell the framework what actions can be executed with what HTTP methods.


this.allowedMethods = {
  index = "GET",
  save = "PUT,POST",
  remove = "DELETE"
}

The security map above tells the framework what HTTP methods you can use for which action. For example, the remove() action can only be executed with the DELETE HTTP method. If you execute the action with any other HTTP method, then the framework will throw a security exception. In previous version, you had to do hoops in order to intercept and gracefully show users a nice message. With ColdBox 4 we introduce the onInvalidHTTPMethod() action.

Tip: By default, every event handler controller action can be executed using ANY HTTP method.

You can place this action in the same handler or a base handler and it will become alive as soon as an action is executed with an invalid HTTP method. The signature for the method is:

 


function onInvalidHTTPMethod( faultAction, event, rc, prc ){
    event.renderData( 
       type="json", 
       data={ "error" : true, "message" : "The endpoint you called cannot be executed using the #event.getHTTPMethod()# HTTP method." } 
    ).setHTTPHeader( statusCode="405", statusMessage="Invalid HTTP Method #event.getHTTPMethod()#" );
}

The faultAction tells you what action was invalidly called and you can use the event.getHTTPMethod() to retrieve the offending method. This way you can make sure you can uniformly respond to RESTFul requests that are invalid.

Add Your Comment

Recent Entries

BoxLang Is Heading to JavaLand 2026! 🚀

BoxLang Is Heading to JavaLand 2026! 🚀

We’re excited to announce that the team behind BoxLang will be attending JavaLand 2026 as Startup Sponsors!

From March 10–12, 2026, the Java community will gather at Europa-Park for one of the most unique and immersive developer conferences in Europe. With nearly 130 presentations across multiple tracks, workshops, and community activities, JavaLand brings together developers, architects, and technology leaders from across the JVM ecosystem.

For the BoxLang team, this is a fantastic opportunity to connect with the Java community and continue our mission: modernizing software development on the JVM while empowering developers with productive, flexible tools.

Maria Jose Herrera
Maria Jose Herrera
March 06, 2026
The CFML Talent Gap Is Real: Scale Your ColdFusion Team Without Hiring Full-Time

The CFML Talent Gap Is Real: Scale Your ColdFusion Team Without Hiring Full-Time

ColdFusion applications still power critical systems across industries.

From universities and healthcare platforms to financial services and enterprise internal tools, CFML continues to run many systems organizations depend on every day.

But there’s a growing challenge many teams are quietly facing:

Finding experienced CFML developers is getting harder.

And when internal teams are already stretched thin, even small projects or performance issues can quickly turn ...

Cristobal Escobar
Cristobal Escobar
March 06, 2026
Discover the tools, tricks, and techniques every modern CFML and BoxLang developer needs!

Discover the tools, tricks, and techniques every modern CFML and BoxLang developer needs!

Into the Box 2026 is officially on the horizon, and it’s shaping up to be our most impactful conference yet.

Our mission this year is simple: **Make modernization approachable for everyone.** Whether you’re a seasoned ColdFusion veteran or a developer just starting your BoxLang journey, we’ve priced this event to ensure the entire community can join us in person.

Victor Campos
Victor Campos
March 05, 2026