A flexible, modular REST client built for ease-of-use and resilience.
npm install @bbc/http-transport

!npm
!license
!github-issues
!stars
!forks
> A flexible, modular REST client built for ease-of-use and resilience
```
npm install @bbc/http-transport --save
`js
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);
}
`
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.
`ts
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
`
as the type. This is not recommended though as it means all plugins later in the chain will lose the types too, because they have no idea what changes were made.`ts
const myPlugin: Plugin = (context, next) => {};
`Test
`
npm test
`To generate a test coverage report:
`
npm run coverage
``