Вызов ресурса

После того как определили нужные ресурсы и добавили их в 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: '...' }

results matching ""

    No results matching ""