README
Transport
This package provides a toolset to simplify working with transport layer (http, ws).
Installation
npm i @axmit/transport
or yarn add @axmit/transport
Quick start
To create a new transport you should do the following:
Base usage
User.transport.ts
import { BaseHttpTransport } from '@axmit/transport';
import axios, { AxiosInstance } from 'axios';
import { IUserModel } from 'entities/User/User.models';
const basePath = '/users';
export const userTransport = new BaseHttpTransport<AxiosInstance, IUserModel>('/users', axios);
Advanced usage
If you want add some methods or override some of them you should extent base class and implement custom logic
import axios, { AxiosInstance } from 'axios';
import { IUserCollectionModel, IUserModel, IUserUpdateModel } from 'entities/User/User.models';
import { ISocialModel } from 'entities/Auth';
import { BaseHttpTransport } from '@axmit/transport';
const basePath = '/users';
const baseMapper = {
mapFrom: data => data.data,
mapCollectionFrom: data => data.data
};
class UserTransport extends BaseHttpTransport<AxiosInstance, IUserModel, IUserCollectionModel, IUserModel, IUserUpdateModel> {
constructor() {
super(basePath, axios, baseMapper);
}
public socialBind = (params: { id: string; data: ISocialModel }): Promise<IUserModel> =>
this.axios.put(`${basePath}/${params.id}/social`, params.data).then(r => baseMapper.mapFrom(r));
}
export const userTransport = new UserTransport();
And then use it in a communication
User.communication.ts
...
const UserAPIProviders = [
new APIProvider(actionsTypes.get, userTransport.get),
new APIProvider(actionsTypes.update, userTransport.update)
];
const socialApiProvider = [new APIProvider(actionsTypes.update, userTransport.socialBind)];
...
Available methods
- add
- get
- update
- delete
- deleteAll
- getCollection