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') {
}
})
.use<{res: { random: number } }>((context, next) => {
context.res.random = Math.random();
})
.get(url)
.asResponse();
console.log(res.random);
Opting Out
If you don't want to type your plugin, simply use any
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.
const myPlugin: Plugin<any> = (context, next) => {};
Test
npm test
To generate a test coverage report:
npm run coverage