@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

Dependencies (0)

    Dev Dependencies (10)

    Package Sidebar

    Install

    npm i @cmsgov/request-version

    Weekly Downloads

    65

    Version

    1.0.1

    License

    UNLICENSED

    Last publish

    Collaborators

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