@cmsgov/request-version

1.0.1 • Public • Published

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

Package Sidebar

Install

npm i @cmsgov/request-version

Weekly Downloads

41

Version

1.0.1

License

UNLICENSED

Last publish

Collaborators

  • molindoz
  • azizakmeer
  • adilenghel
  • nominaman83
  • grooveisall
  • kramersb
  • tarikuzz
  • joshua.ewing-sb
  • ddhecker
  • trzash-6891
  • cruddyshad0w
  • rtdiggstown
  • rodmunoz
  • sb_kmr
  • sivasrinisb
  • walber.gonzalez
  • davidberry_sb
  • gokhale
  • petemckinneysb
  • sarah-adhocteam
  • cms-cis-qpp
  • bijujoseph
  • aaronmanne
  • kyleapfel
  • boristotle
  • chetanmunegowda
  • suchint.nagra
  • cmsds
  • scoringengine
  • djacksonsb
  • nicholascgates
  • pwolfertadhoc
  • ni.chia
  • clkawell
  • dlomax30
  • kimadhoc
  • alunpm
  • frederick.huang
  • tgroshsb
  • pstancic
  • john-manack
  • timwtoysb
  • sdbaradhoc