Sign up to receive SuiteScript examples and advice directly in your email inbox.

SuiteScript Design - Generating RESTful URLs

Created: November 23, 2020

On to this week's design pattern. It's technically a single utility function, but it plays a major role in my integration design pattern, which we'll continue exploring over the next few weeks.

Most modern systems that expose an HTTP API employ a RESTful interface, and their API URLs follow a reasonably consistent naming pattern.

Consistent patterns are my favorite thing! Because they allow us to write code that takes advantage of that consistency.

Here you can find the function I use in my integration systems that generates a typical URL path for any resource or child resource in a RESTful API.

It's written in 2.1 and takes advantage of modern syntax like destructuring and default parameters. All of that could quickly be adapted to a 2.0 environment, though.

I see a lot of people struggle with or write "clever" (obscure) code for URL generation, but URLs - especially those for a RESTful service - follow very simple patterns. The hardest part is usually generating the query string, and N/url.format() does that for us with its params argument.

All we need to do - and so all this function really does - is create an Array of all the possible path values we might have, filter out any empty values, then join the rest with a /.

let domain = [resource, id, child, childId].filter(Boolean).join('/')

You can see the details and example usage and output in the JSDoc header for the function.