@bbc/http-transport
    TypeScript icon, indicating that this package has built-in type declarations

    3.5.6 • Public • Published

    NPM downloads Build Status npm license github-issues stars forks

    http-transport

    A flexible, modular REST client built for ease-of-use and resilience

    Installation

    npm install @bbc/http-transport --save
    

    Usage

    const url = 'http://example.com/';
    const client = require('@bbc/http-transport').createClient();
    
    const res = await client
       .get(url)
       .asResponse();
      
      if (res.statusCode === 200) {
        console.log(res.body);
      }

    Documentation

    For more examples and API details, see API documentation

    TypeScript

    Types are included in this project, and they also work with plugins.

    Just pass the types that your plugin will add to context as a generic. This will be overlayed on top of any types added by previous plugins in the chain.

    E.g.

    const addSessionData: Plugin<{ session: { userId: string } } }> = (context, next) => {
      context.session = { userId: 'some-user' };
    };
    
    const res = await client
      .use(addSessionData)
      .use((context, next) => {
        if (context.session.userId === 'some-user') { // this would error if addSessionData middleware was missing
          // do something
        }
      })
      .use<{res: { random: number } }>((context, next) => {
        context.res.random = Math.random();
      })
      .get(url)
      .asResponse();
    
    console.log(res.random); // number

    Opting Out

    If you don't want to type your plugin, simply use any as the type. This is not recomemnded though as it means all plugins later in the chain will loose the types too, because they have no idea what changes were made.

    const myPlugin: Plugin<any> = (context, next) => {};

    Test

    npm test
    

    To generate a test coverage report:

    npm run coverage
    

    Install

    npm i @bbc/http-transport

    DownloadsWeekly Downloads

    339

    Version

    3.5.6

    License

    Apache-2.0

    Unpacked Size

    394 kB

    Total Files

    93

    Last publish

    Collaborators

    • angie
    • npmbs
    • vaughr03
    • iuketaylor
    • jamiebower185
    • bucklm03
    • benjwheeler
    • onlyonehas
    • drrobharper
    • johnnewman
    • ibl
    • simontanner
    • simongregory
    • magdalena.glanc
    • tonymcbeth