From 1e72d9e71fc124a28946253ea462cfbc496839c4 Mon Sep 17 00:00:00 2001 From: mere1y <4-mere1y@users.noreply.gitlab.otter.su> Date: Mon, 10 Jul 2023 00:59:27 +0600 Subject: [PATCH] feat(api): add localApi instance, request wrapper --- src/shared/api/request.ts | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/shared/api/request.ts diff --git a/src/shared/api/request.ts b/src/shared/api/request.ts new file mode 100644 index 0000000..0850f9a --- /dev/null +++ b/src/shared/api/request.ts @@ -0,0 +1,28 @@ +import axios from 'axios'; +import {createEffect} from 'effector'; + +import {API_URL} from '../config'; + +export const localApi = axios.create({ + baseURL: API_URL, + withCredentials: true, + validateStatus: (status) => status >= 200 && status < 300, +}); + +interface Request { + path: string; + method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; + body?: unknown; + params?: unknown; +} + +export const requestFx = createEffect((request) => { + return localApi({ + method: request.method, + url: request.path, + data: request.body, + params: request.params, + }) + .then((response) => response.data) + .catch((response) => Promise.reject(response.response.data)); +});