Вызов ресурса
После того как определили нужные ресурсы и добавили их в apipie и получили из него дерево функций.
Можно приступать к работе с ними.
// Auth module
import { auth, params } from './config';
const getToken = {
name: 'getToken',
method: 'get',
url: '/auth/process/',
params: true,
};
const logout = {
name: 'logout',
method: 'post',
url: '/auth/logout/',
meta: { auth: true },
};
export default {
name: 'auth',
children: [
getToken,
logout,
],
};
import createApi from 'apipie';
import axios from 'axios';
import { baseURL } from 'config';
import { headerAuthorization, getTokenForAxios, isAuth, handleResponseError } from 'src/services/session';
import auth from './auth';
import profile from './profile';
const routes = [
auth,
profile,
];
axios.defaults.baseURL = baseURL;
axios.interceptors.response.use(response => response.data, handleResponseError);
const authService = async (ctx, next) => {
if (ctx.meta.auth && !isAuth()) {
throw new Error('Client is not authorized'); // useless check
}
if (ctx.meta.auth) {
ctx.options.headers = {
[headerAuthorization]: getTokenForAxios(),
};
}
await next();
};
const api = createApi(routes, axios, { hooks: [authService] });
export default api;
Apipie соберет все ресурсы и преобразует их в дерево функций.
И теперь можно обратиться к модулю auth, чтоб вызывать у него нужные методы.
const { response } = await api.auth.getToken({ params });
response // { data: { token: '...' }