Разбор: модель 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 и Mermaid, FSD, паттерны управления состоянием и Architecture Decision Records.

3990 Скидка 25%
2990

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

Комментарии

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