This package can be used to create a core api class to route requests between a client and an api.
It is written in TypeScript, and typings are included directly in the package.
yarn add axios-core-api
or npm install axios-core-api
You can read an in depth article on why and how to uses this package on medium.
import ApiCore from "axios-core-api";
const apiConfig = {
headers: {
Accept: "application/json",
Authorization: `Bearer 123abc`,
"Content-Type": "application/json",
},
timeout: 15000,
};
export default class CrudApi {
constructor() {
this._apiCore = new ApiCore(apiConfig);
this._basePath = "https://www.crud.org/api";
}
}
import { AxiosRequestConfig } from "axios";
import ApiCore from "axios-core-api";
const apiConfig: AxiosRequestConfig = {
headers: {
Accept: "application/json",
Authorization: `Bearer 123abc`,
"Content-Type": "application/json",
},
timeout: 15000,
};
export default class CrudApi {
_apiCore: ApiCore;
_basePath: string;
constructor() {
this._apiCore = new ApiCore(apiConfig);
this._basePath = "https://www.crud.org/api";
}
}
getAll() {
return this._apiCore.get(`${this._basePath}`);
}
getOne(id) {
return this._apiCore.get(`${this._basePath}/${id}`);
}
create(newExample) {
return this._apiCore.post(`${this._basePath}`, newExample);
}
createForm(newExample) {
return this._apiCore.postFormData(`${this._basePath}`, newExample);
}
updatePut(id, nextExample) {
return this._apiCore.put(`${this._basePath}/${id}`, nextExample);
}
updatePatch(id, nextExample) {
return this._apiCore.patch(`${this._basePath}/${id}`, nextExample);
}
destroy(id) {
return this._apiCore.delete(`${this._basePath}/$id`);
}
refreshApiInstance(newAccessToken) {
const newConfig = apiConfig;
newConfig.headers.Authorization = `Bearer ${newAccessToken}`;
this._apiCore.refreshApiInstance(newConfig);
}