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.
HTH
-EG