Разбор: модель Ratings

Основы архитектуры фронтенда

Разбор: модель Ratings

Продолжительность: 5 мин

Итак, это было последнее практическое упражнение курса. Давайте я поделюсь своим вариантом решения.

Вы можете увидеть изменения в коде открыв пулл-реквест на Гитхабе.

На первом этапе я добавил функцию fetchRestaurantReviews в файле lib/api.ts:

export async function fetchRestaurantReviews( restaurantId: string, ): Promise<ReviewResponse[]> { const response = await fetch( `http://localhost:3002/restaurants/${restaurantId}/reviews`, ); return response.json(); }
typescript

Затем я создал тип Ratings для описания нашей абстракции и создал функцию getRestaurantRatings, которая как и в случае с ресторанами, получает данные из разных источников и формирует ответ с интересующей нас структурой.

export async function getRestaurantRatings(id: string): Promise<Ratings> { const restaurant = await fetchRestaurant(id); const reviews = await fetchRestaurantReviews(id); const { attributes } = restaurant; const initialReviews = restaurant.relationships.reviews; return { rating: attributes.rating, numRatings: attributes.numRatings, reviews: [...initialReviews, ...reviews].map((review) => ({ id: review.id, rating: review.rating, comment: review.comment, date: review.date, userName: review.user.name, })), }; }
typescript

Далее добавил использование этой функции в компоненты RatingAndReviewsSummary и Reviews, которые мы создавали на первом этапе.

Обратите внимание что здесь совсем не важна визуальная составляющая. Я хочу чтобы вы сфокусировались на самой идее добавления нового слоя абстракции над обращением к API.

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

Это платный урок

Купите полный доступ к курсу чтобы просматривать данный контент

Основы архитектуры фронтенда

Спроектируешь архитектуру реального фронтенд-приложения — от C4-диаграмм до FSD-структуры в монорепо на Next.js. Не пересказ книг по архитектуре и не курс за 80 000 ₽.

8900 Скидка 34%
5900

Безопасные платежи обрабатываются сервисом Юкасса

Если курс не подошёл — вернём деньги без вопросов в течение 14 дней

Комментарии

Войдите, чтобы оставить комментарий