UNPKG

@cmsgov/request-version

Version:

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

76 lines (50 loc) 1.44 kB
# 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 ```js const requestVersion = require('@cmsgov/request-version'); app.use(requestVersion.setVersion()); ``` ### Options ```js 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: ```js 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: ```js app.use((req, res, next) => { console.log(req.apiVersion) next() }); ``` ## Installation ```bash npm install @cmsgov/request-version ``` ## Tests ```bash npm test ``` Project linting: ```bash npm run lint ``` ## Coverage ```bash npm run test:coverage ``` ## Author Branon Barrett <branon.barrett@semanticbits.com>