fetch(API.user);1. Перевірте
statusCode, звичайний fetch не кидає помилок на не 2ХХ статус кодиfetch(API.user).then((response) => {
if (!response.ok) {
throw new Error(`Fetch failed`, { cause: response });
}
return response.json();
});2. Провалідуйте тіло відповіді, особливо якщо працюєте з "чужим" бекендом
.then((maybeUser) => {
// 2
if (typeof maybeUser?.id !== "string") {
throw new Error(`UserDTO is invalid`, { cause: maybeUser });
}
});3. Перетворіть отриманий об'єкт на модель, якою буде користуватися frontend
.then((maybeUser) => {
// ...2
return { userId: maybeUser.id };
});Паралельно, не забуваємо обробити стани коли:
1. Запит триває => показуємо індикацію завантаження
2. Запит завершився помилкою => показуємо повідомлення
3. Запит повернув "нічого" => показуємо повідомлення
І не забуваємо про AbortController (C)
Валідацію та перетворення (маппінг) моделей не обов'язково робити руками:
Yup (5.8KK завантажень, 22к ⭐️), Joi (10KK завантажень, 21к⭐️), Zod (7.6M завантажень, ⭐️29.1К )
❓Чи завжди все це потрібно? Залежить від рівня серйозності проекту. Якщо він має жити більше року і приносити гроші - варто зважити.
@reactbeginners