@cmsgov/request-version

CMS QPP specific express middleware to get version from Accept header and put it on the request object

Usage no npm install needed!

<script type="module">
  import cmsgovRequestVersion from 'https://cdn.skypack.dev/@cmsgov/request-version';
</script>

README

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-version

Tests

npm test

Project linting:

npm run lint

Coverage

npm run test:coverage

Author

Branon Barrett branon.barrett@semanticbits.com