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 AI v2: Enterprise AI Development Without the Complexity

BoxLang AI v2: Enterprise AI Development Without the Complexity

One Year. 100+ Features. Unlimited Possibilities.

Just one year ago, in March 2024, we launched BoxLang AI 1.0. Today, we're thrilled to announce BoxLang AI v2—a massive leap forward that positions BoxLang as the most powerful and versatile AI framework on the JVM.

Luis Majano
Luis Majano
January 19, 2026
CommandBox: A Smarter Foundation for BoxLang and CFML Workflows

CommandBox: A Smarter Foundation for BoxLang and CFML Workflows

In day-to-day development, some tools simply do their job… and others quietly change the way you work. CommandBox falls into the second category.

It doesn’t replace your editor, framework, or existing applications. Instead, it becomes the common ground where CFML and BoxLang development meet ,giving teams a consistent, reliable way to build, run, and evolve their projects.

Victor Campos
Victor Campos
January 16, 2026
BoxLang v1.9.0 : Production-Ready Stability, Enhanced Lifecycle Management, and Rock-Solid Reliability

BoxLang v1.9.0 : Production-Ready Stability, Enhanced Lifecycle Management, and Rock-Solid Reliability

Happy New Year! The BoxLang team is excited to announce BoxLang 1.9.0, a significant stability and compatibility release focused on production-readiness thanks to our client migrations and new application deployments. This release also introduces array-based form field parsing conventions, enhanced datasource lifecycle management, improved context handling, and resolves over 50 critical bugs to ensure enterprise-grade reliability for mission-critical applications.

Luis Majano
Luis Majano
January 09, 2026