Skip to content

Работа с API на фронтенде

Supabase адаптер

Теперь нужно реализовать такие же как в Hoppscotch запросы в коде нашего фронтенда. Для товаров категории и подробная информации о товаре это можно сделать сразу, заменив всего одну строку:

api/products.ts
js
const products = {
  async categoryProducts(categoryId) {
    // return http.get(`/arty-crafty/api/category-products-${categoryId}.json`);
    const data = await http.get(`${SB}/categories?select=id,title,products(id,title,summary)&id=eq.${categoryId}`);
    return data[0].products;
  },
};

В ProductCard проставляем корректные пути к свойствам товара (product.summary.price) и категория показывается. Ранее product.desc бы переименован в базе данных в product.summary.

Теперь нужно загрузить в самом начале старта приложения все категории товаров, чтобы построить каталог.

js
async categories() {
  return http.get(`${SB}/categories?select=id,title,data`);
},

Ну и запрос информации о товаре:

js
async product(id: number) {
  const data = await http.get(`${SB}/products?select=id,title,summary,data&id=eq.${id}`);
  return data[0] ?? null;
},

Как видно, вынос транспортной логики в отдельный сервис сильно облегчает работу при замене бэкенда и делает код в основном приложении чище и понятней.