@cmsgov/request-version v1.0.1
qpp-shared-api-versioning-node
This package provides ExpressJS middleware that parses incoming HTTP headers to determine the version of the API to be consumed and sets a apiVersion property on the req object.
The library will parse the version from the Accept header, expecting the following format: Accept: application/vnd.cms.gov.v1+json
Requirements
node v6.9.1 or higher
Usage
Set request version by 'Accept' header
const requestVersion = require('@cmsgov/request-version');
app.use(requestVersion.setVersion());Options
const options = {
defaultVersion: 1,
supportedVersions: [1, 2]
};You can pass in a defaultVersion value on options to set the default version if no Accept header is included in the request:
app.use(requestVersion.setVersion({ defaultVersion: 1 }));If you pass in a supportedVersions array on options the requested version does not exist in the array, then the defualt version will be set.
Downstream
If you define a middleware after requestVersion then you can verify that the version is indeed set:
app.use((req, res, next) => {
console.log(req.apiVersion)
next()
});Installation
npm install @cmsgov/request-versionTests
npm testProject linting:
npm run lintCoverage
npm run test:coverageAuthor
Branon Barrett branon.barrett@semanticbits.com