Files
fishfish/frontend/src/api/index.js
T

50 lines
1.6 KiB
JavaScript

import axios from "axios";
const API_URL = "/api";
axios.interceptors.request.use(
(config) => {
const token = localStorage.getItem("token");
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
return config;
},
(error) => {
return Promise.reject(error);
},
);
axios.interceptors.response.use(
(response) => response,
(error) => {
if (error.response && error.response.status === 401) {
localStorage.removeItem("token");
window.location.href = "/login";
}
return Promise.reject(error);
},
);
// Базовые CRUD операции
export const getItem = (id) => axios.get(`${API_URL}/items/${id}`);
export const getAllItems = () => axios.get(`${API_URL}/items`);
export const addItem = (itemData) => axios.post(`${API_URL}/items`, itemData);
export const updateItem = (id, itemData) =>
axios.patch(`${API_URL}/items/${id}`, itemData);
export const deleteItem = (id) => axios.delete(`${API_URL}/items/${id}`);
export const getAllCategories = () => axios.get(`${API_URL}/getCategories`);
export const getCart = () => axios.get(`${API_URL}/cart/`);
export const addToCart = (data) => axios.post(`${API_URL}/cart/`, data);
export const updateCartItem = (id, data) =>
axios.post(`${API_URL}/cart/${id}`, data);
export const removeFromCart = (id) => axios.delete(`${API_URL}/cart/${id}`);
export const createOrder = (data) => axios.post(`${API_URL}/orders/`, data);
export const getUserOrders = () => axios.get(`${API_URL}/orders/`);
export const getOrder = (id) => axios.get(`${API_URL}/orders/${id}`);