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

0.1.3 • Public • Published

Biko httpClient

Defines a wrapper on top of fetch or any HTTP library like Axios.

That wrapper is in fact a TypeScript interface, which any underlying connector must meet. Currently, two connectors are provided:

  • axios (completely functional)
  • fetch (at this moment, not functional and only present as a proof-of-concept)

Installation

npm install --save @biko/http-client

API

setConnector(connector: HttpClientConnector)

Sets httpClient connector. It must be of type HttpClientConnector and own the following members:

  • defaultConfig: { baseURL: Config; }
  • sendGet: (path: string, config?: Config)=> Promise<{ status: number; data: {} }>;
  • sendPost: (path: string, payload: {}, config?: Config)=> Promise<{ status: number; data: {} }>;
  • sendPut: (path: string, payload: {}, config?: Config)=> Promise<{ status: number; data: {} }>;
  • sendPatch: (path: string, payload: {}, config?: Config)=> Promise<{ status: number; data: {} }>;
  • sendDelete: (path: string, config?: Config)=> Promise<{ status: number; data: {} }>;
  • addRequestInterceptor: ( onFulfilled?: (config: Config) => Config | Promise<Config>, onRejected?: (error: any) => any, ): number;
  • addResponseInterceptor: ( onFulfilled?: (response: any) => any | Promise<any>, onRejected?: (error: any) => any, ): number;
  • removeRequestInterceptor: (id: number): void;
  • removeResponseInterceptor: (id: number): void;

Request and response interceptors are mainly based on Axios' interceptors, but they can be implemented using fetch or any other HTTP library. Please refer to them for further information.

Config type is: { baseURL: string; [index: string]: any; }

setDefaultConfig(config: Config)

Sets HttpClientConnector's default config. This is useful when connections are always done to the same API, using the same tokens/auth data, etc.

Example:

// myHttpClient.ts
import * as httpClient from 'biko-http-client';
import * as httpClientConnector from 'biko-http-client/lib/connectors/axios';

httpClient.setConnector(httpClientConnector);

httpClient.setDefaultConfig({
  baseURL: 'http://example.com/api',
  headers: {
    'X-user': 'myUsername',
    'X-password': 'myPassword',
  },
});

// Reexport only the functions your app is going to use
export const sendGet = httpClient.sendGet;
export const sendPost = httpClient.sendPost;
...

// ...or export the whole httpClient if your app uses all functions
export { httpClient };
// myComponent.ts
import { sendGet } from './myHttpClient';
sendGet('/my-path').then(response => {
  console.log(response.status);
  console.log(response.data);
});

Readme

Keywords

Package Sidebar

Install

npm i @biko/http-client

Weekly Downloads

6

Version

0.1.3

License

MIT

Unpacked Size

30.1 kB

Total Files

24

Last publish

Collaborators

  • asilgag
  • carlos.martinez.biko2
  • daneget
  • gallegodavid
  • ismaeliberal
  • rubenbp