Вопрос проверяет понимание назначения слоя api в архитектуре Feature-Sliced Design и умения отделять работу с сетью от UI-логики.
В Feature-Sliced Design приложение делится на слои: app, processes, pages, widgets, features, entities и shared. Слой api обычно размещается внутри shared или entities и отвечает за всё, что связано с общением с бэкендом: базовые HTTP-клиенты, конкретные эндпоинты, типы запросов и ответов, а также функции-обёртки над fetch или axios.
src/
shared/api/
client.ts // базовый axios/fetch с interceptors
endpoints.ts // константы URL
entities/user/
api/
getUser.ts // функция запроса
types.ts // DTO и модели
// shared/api/client.ts
export const client = axios.create({
baseURL: import.meta.env.VITE_API_URL,
});
// entities/user/api/getUser.ts
export async function getUser(id: string): Promise<User> {
const { data } = await client.get(`/users/${id}`);
return mapUserDto(data); // маппинг DTO в доменную модель
}
// features/profile/ui/Profile.tsx
const user = await getUser(userId); // UI не знает про axios
Такой подход позволяет менять транспорт (REST на GraphQL), не трогая компоненты, и держать бизнес-логику независимой от инфраструктуры.
Итог: слой api стоит применять всегда, когда приложение общается с сервером — он делает код чище, тестируемее и устойчивее к изменениям бэкенда.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию